通过process.start(path)使用网络凭据访问网络共享
-
29-09-2019 - |
题
我在用 这 模仿域帐户的模仿类别以访问网络共享类似:
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);
仍然没有快乐。请注意,我确定我的网络(网络限制)是正确的,因为我用来与身份验证的资源建立先前的联系。
那么,如何使用网络凭据查看Explorer中的UNC路径?
解决方案
我今天遇到了同样的问题,这对我有用:
private void OpenNetworkPath(string uncPath)
{
System.Diagnostics.Process.Start("explorer.exe", uncPath);
}
其他提示
而不是将解体传递给 Process.Start
, ,尝试在 Process.Start
并通过undpath作为 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);
不隶属于 StackOverflow