使用网络凭证通过Process.Start(路径)访问网络共享
我使用这个Impersonator类来模拟一个域帐户来访问网络共享,如下所示:
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)
}
怀疑Impersonator类有问题,我尝试手动向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);
仍然没有快乐。 请注意,我确定我的netCred(NetworkCredential)是正确的,因为我已经使用之前的身份验证资源连接。
那么,如何使用网络凭证在资源管理器中查看UNC路径?
我今天遇到了同样的问题,下面是对我有用的问题:
private void OpenNetworkPath(string uncPath)
{
System.Diagnostics.Process.Start("explorer.exe", uncPath);
}
不要将uncPath传递给Process.Start
,而是尝试在Process.Start
启动“explorer”,并将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);
链接地址: http://www.djcxy.com/p/44165.html
上一篇: Accessing network share via Process.Start(path) using network credential
下一篇: C# Programmatic Remote Folder / File Authentication In Non