代码之家  ›  专栏  ›  技术社区  ›  Ian manuel aldana

通过进程访问网络共享。使用网络凭据启动(路径)

  •  2
  • Ian manuel aldana  · 技术社区  · 15 年前

    this 用于模拟域帐户以访问网络共享的模拟程序类,如下所示:

    using(new Impersonartor(username, domain, password))
    {
    //Code Here
    }
    

    从网络共享复制文件可以正常工作:

    using(new Impersonartor(username, domain, password))
    {
     CopyAll(uncPath, localPath)
    }
    

    但是,使用Process.Start在资源管理器中查看UNC共享会引发“登录失败:未知用户名或错误密码”:

    using(new Impersonartor(username, domain, password))
    {
     Process.Start(uncPath)
    }
    

    由于怀疑模拟程序类有错误,我尝试手动向ProcessStartInfo提供凭据,如下所示:

                            System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo(uncPath);
                            viewDir.UseShellExecute = false;
                            viewDir.Domain = netCred.Domain;
                            viewDir.UserName = netCred.UserName;
                            viewDir.Password = ConvertToSecureString(netCred.Password);
                            System.Diagnostics.Process.Start(viewDir);
    

    那么,如何使用网络凭据在资源管理器中查看UNC路径?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Random Developer    15 年前

    我今天也遇到了同样的问题,以下是对我有用的:

    private void OpenNetworkPath(string uncPath)
    {
       System.Diagnostics.Process.Start("explorer.exe", uncPath);
    }
    
        2
  •  0
  •   user474407 user474407    15 年前

    而不是将uncPath传递给 Process.Start ,尝试在中启动“资源管理器” 并将uncPath作为 ProcessStartInfo Arguments

    System.Diagnostics.ProcessStartInfo viewDir = new System.Diagnostics.ProcessStartInfo("explorer.exe");
    viewDir.UseShellExecute = false;
    viewDir.Domain = netCred.Domain;
    viewDir.UserName = netCred.UserName;
    viewDir.Password = ConvertToSecureString(netCred.Password);
    viewDir.Arguments = uncPath;
    System.Diagnostics.Process.Start(viewDir);