我想从C#代码打开映射的网络驱动器,但它受密码保护,因此当我尝试直接打开它时会抛出异常。有人可以在打开此驱动器时提供用户名和密码吗?例外细节:
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
我只是打电话给System.Diagnostics.Process.Start("Z:")
答案 0 :(得分:2)
Z:不是文件名。 [编辑:如果没有密码保护就可以了,尝试执行你的代码并且有效]
尝试使用ProcessStartInfo对象作为参数,因为它允许设置用户名和密码。
关于here中的FileName参数:
文件名是任何应用程序或文档。文档被定义为具有与之关联的打开或默认操作的任何文件类型。您可以使用“操作系统”提供的“文件夹选项”对话框查看计算机的已注册文件类型及其关联的应用程序。 “高级”按钮将显示一个对话框,显示是否存在与特定注册文件类型关联的打开操作。
答案 1 :(得分:0)
也许您可以考虑打开您的“z驱动器”意味着指向的UNC路径。提醒一下,PC用户可以断开Z:并用他们想要的任何路径替换它......
“直接启动”和“打开此驱动器”的含义并不完全清楚,但如果您的代码片段建议您尝试为驱动器的文件夹启动资源管理器,那么您可以使用ProcessStartInfo
作为提供证书的机制。
如果您尝试以编程方式访问该共享上的文件,那么您可能会查看术语模拟以在不同的凭据下运行文件访问代码块。这Accessing a Shared File (UNC) From a Remote, Non-Trusted Domain With Credentials看起来特别有希望。
如果您尝试使用预先指定的凭据实际创建网络驱动器,那么此处还有另一种解决方案 - https://serverfault.com/questions/47005/specifying-username-pass-as-part-of-a-unc-path-or-map-network-drives-for-a-window/47008#47008(不要忘记在之后断开连接)。