программно запустить cmd.exe от имени администратора в Vista, C#

StackOverflow https://stackoverflow.com/questions/667381

Вопрос

У меня есть проект установки и развертывания визуальной студии.Я добавил в него скрипт .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.

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

Это было полезно?

Решение

Попробуйте выполнить 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)

Другие советы

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

...

using System.Diagnostics;

...

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

...

Ашутош

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top