【问题标题】:Process.Start an exe file on an network share as another userProcess.以其他用户身份在网络共享上启动 exe 文件
【发布时间】:2012-02-08 07:13:43
【问题描述】:

我需要运行位于我域中的网络驱动器上的 exe 文件。驱动器以“M:\”的形式成功连接到我的 PC,但我知道 Process.Start(string, string...) 在启动位于网络共享上的进程时需要具有文件的 URL 路径。

这是我的代码:

                string user = "user";
                string password = "Qwerty1";
                string domain = "nwtraderds";
                string open = "file://myshare\dir1\dir2\dir3\test.exe";

                string PwString = password;

                char[] PasswordChars = PwString.ToCharArray();
                SecureString Password = new SecureString();
                foreach (char c in PasswordChars)
                    Password.AppendChar(c);

                System.Diagnostics.Process.Start(open, user, Password, domain);

有趣的是:

                System.Diagnostics.Process.Start(open);

工作正常。 我的想法已经用完了,有人可以帮我吗?

【问题讨论】:

  • 这可能是个愚蠢的问题,但您是否尝试过\\myshare\dir1\dir2\dir3\test.exe 而不是file://myshare\dir1\dir2\dir3\test.exe
  • @Eben Roux 说真的,我不知道该说什么。像爆炸一样工作!我很确定我试过这个,但我必须在整个路径中有一些错误的目录。 Process.Start 方法的 msdn 站点(字符串、字符串、安全字符串、字符串)link

标签: c# exe network-share


【解决方案1】:

虽然已经挂载了网络共享,但 Windows 将不接受从同一个桌面使用其他用户访问它 - 您甚至可以自己尝试:只需使用 user1 挂载它,然后再次尝试挂载相同的共享(并行)与不同的用户 (user2) 仍然挂载(同一台机器,相同的 Windows 资源管理器!)。

更新:

这个file://myshare\dir1\dir2\dir3\test.exe 不起作用!

您要么使用\\myserver\myshare\dir1\dir2\dir3\test.exe(不确定这是否有效!)要么使用驱动器号M:\\dir1\dir2\dir3\test.exe

【讨论】:

  • 按照这个想法,如果我输入用户、密码和域变量,我的真实凭据应该可以工作吗?我试过了,它仍然显示“系统找不到指定的文件”。
  • 是的,谢谢,Eben Roux 帮助我得到了同样的结果 :) 感谢你们俩的帮助,干杯。我很困惑,因为 MSDN 说:“当可执行文件位于远程驱动器上时,您必须使用统一资源标识符 (URI) 来标识网络共享,而不是链接驱动器号。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2016-12-27
  • 1970-01-01
  • 2013-09-18
  • 2011-12-31
  • 1970-01-01
相关资源
最近更新 更多