1. 程式人生 > >C# 操作共享資料夾

C# 操作共享資料夾

/// <summary>
/// 共享檔案操作類
/// </summary>
public class SharedFolderManager
{
    public SharedFolderManager()
    {
        //
        //TODO: 在此處新增建構函式邏輯
        //
    }

    /// <summary>
    /// 共享資料夾根路徑
    /// </summary>
    private static readonly string RootPath = ConfigurationManager.AppSettings["RootPath"];
    /// <summary>
    /// 連線共享資料夾的賬號
    /// </summary>
    private static readonly string User = ConfigurationManager.AppSettings["User"];
    /// <summary>
    /// 連線共享資料夾的密碼
    /// </summary>
    private static readonly string Password = ConfigurationManager.AppSettings["Password"];

    /// <summary>
    /// 連線共享資料夾,連線上後可以像操作本地磁碟的方式操作資料夾和檔案
    /// 該方法使用配置檔案中的資訊連線共享資料夾
    /// </summary>
    /// <returns></returns>
    public static bool Connect()
    {
        return Connect(RootPath, User, Password);
    }

    /// <summary>
    /// 連線共享資料夾,連線上後可以像操作本地磁碟的方式操作資料夾和檔案
    /// </summary>
    /// <param name="path">共享資料夾路徑</param>
    /// <param name="userName">使用者名稱</param>
    /// <param name="passWord">密碼</param>
    /// <returns>連線成功返回true,否則返回false</returns>
    public static bool Connect(string path, string userName, string passWord)
    {
        bool Flag = false;
        Process proc = new Process();
        try
        {
            proc.StartInfo.FileName = "cmd.exe";
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.RedirectStandardInput = true;
            proc.StartInfo.RedirectStandardOutput = true;
            proc.StartInfo.RedirectStandardError = true;
            proc.StartInfo.CreateNoWindow = true;
            proc.Start();
            string dosLine = @"net use " + path + " /User:" + userName + " " + passWord + " /PERSISTENT:YES";
            proc.StandardInput.WriteLine(dosLine);
            proc.StandardInput.WriteLine("exit");
            while (!proc.HasExited)
            {
                proc.WaitForExit(1000);
            }
            string errormsg = proc.StandardError.ReadToEnd();
            proc.StandardError.Close();
            if (string.IsNullOrEmpty(errormsg))
            {
                Flag = true;
            }
            else
            {
                throw new Exception(errormsg);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            proc.Close();
            proc.Dispose();
        }
        return Flag;
    }

    /// <summary>
    /// 相對共享資料夾根路徑的路徑
    /// </summary>
    /// <param name="path"></param>
    /// <returns></returns>
    public static string GetPath(string path)
    {
        if (path.StartsWith("\\"))
        {
            path = path.Substring(1);
        }

        return Path.Combine(RootPath, path);
    }
}