программно запустить cmd.exe как администратор в Vista, C # - PullRequest
6 голосов
/ 20 марта 2009

У меня есть проект установки и развертывания Visual Studio. Я добавил в него скрипт .cmd. Скрипту потребуются права администратора для запуска. Когда пользователь нажимает на файл setup.exe, UAC запрашивает у пользователя права администратора. Поэтому я предположил, что все процессы, созданные и вызванные в setup.exe, будут работать в качестве администратора. Поэтому я сделал вызов установки моим консольным приложением, которое содержит следующий код.

ProcessStartInfo p1 = new ProcessStartInfo();
p1.UseShellExecute = true;
p1.Verb = "runas";
p1.FileName = "cmd.exe";
Process.Start(p1);

Так что это должно было сработать, поскольку оно запускалось в административном пространстве.

Я хочу запустить cmd.exe через класс процессов c # от имени администратора. Я использую Windows Vista.

Я пытался не сработало! Что я могу сделать?

Ответы [ 2 ]

10 голосов
/ 20 марта 2009

Попробуйте выполнить команду runas :

...

using System.Diagnostics;

...

string UserName = "user name goes here";
ProcessStartInfo p1 = new ProcessStartInfo();
  p1.FileName = "runas";
  p1.Arguments = String.Format("/env /u:{0} cmd", UserName);
Process.Start(p1);

...

(И я не думаю, что вам нужен явный UseShellExecute)

6 голосов
/ 18 мая 2009

Просто попробуйте это, это сработало для меня.

...

using System.Diagnostics;

...

ProcessStartInfo startInfo = new ProcessStartInfo();
  startInfo.UseShellExecute = true;            
  startInfo.Verb = "runas";
  startInfo.Arguments = "/env /user:" + "Administrator" + " cmd";
Process.Start(startInfo);

...

Ashutosh

...