Process. Запустите исполняемый файл на сетевом ресурсе от имени другого пользователя.

Мне нужно запустить exe-файл, который находится на сетевом диске в моем домене. Диск успешно подключен к моему ПК как «M:\», но я знаю, что Process.Start(строка, строка...) должен иметь 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);

Работает отлично. У меня закончились идеи, может кто-нибудь помочь мне, пожалуйста?


person Germanos    schedule 08.02.2012    source источник
comment
Это может быть глупый вопрос, но вы пробовали \\myshare\dir1\dir2\dir3\test.exe вместо file://myshare\dir1\dir2\dir3\test.exe?   -  person Eben Roux    schedule 08.02.2012
comment
@Eben Roux Серьезно, я не знаю, что сказать. РАБОТАЕТ ОТЛИЧНО! Я совершенно уверен, что пробовал это, но у меня, должно быть, были неправильные каталоги на всем пути. Сайт msdn для метода Process.Start (String, String, SecureString, String) ссылка   -  person Germanos    schedule 08.02.2012


Ответы (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!

person Yahia    schedule 08.02.2012
comment
придерживаясь этой идеи, если бы я ввел переменные пользователя, пароля и домена, мои настоящие учетные данные должны работать? Я попробовал это, и он все еще показывает, что система не может найти указанный файл. - person Germanos; 08.02.2012
comment
да, спасибо, Эбен Ру помог мне с тем же результатом :) Спасибо вам обоим за помощь, ура. Я запутался, потому что MSDN говорит: когда исполняемый файл находится на удаленном диске, вы должны идентифицировать сетевую папку, используя универсальный идентификатор ресурса (URI), а не букву связанного диска. - person Germanos; 08.02.2012