c# - 使用网络凭据通过 Process.Start(path) 访问网络共享

标签 c# process.start networkcredentials

我正在使用 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)
}

怀疑是 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);
}

关于c# - 使用网络凭据通过 Process.Start(path) 访问网络共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132035/

相关文章:

c# - DotNet Linux 错误 - 无法配置 HTTPS 端点。未指定服务器证书

notepad - 我可以从 C# 打开 Notepad.exe 并打开 "Find"选项吗?

c# - 异常: System. ComponentModel.Win32Exception : Invalid data at System. Diagnostics.Process.Start_shell

wpf - 从 WPF 应用程序验证 ASP.NET MVC 用户

c# - 如何从控制台应用程序在 ASP.NET MVC 应用程序中进行身份验证

c# - 检索网页时将语言首选项传递给 HtmlAgilityPack

c# - asp.net webforms 中的 DISQUS 评论

c# - WebAPI 和 Angular JS Excel 文件下载 - 文件已损坏

c# - Process.Start() 和 PATH 环境变量

C# ASP.NET;获取登录用户的 NetworkCredential 对象?