2010-07-16 3 views
0

Можно создать дубликат:
Elevating process privilege programatically?Как составить программу, которая будет запускать ЕХ как администратор

Я хотел бы построить консольное приложение в .NET, которая просто запускает другую программу с повышенные права. Таким образом, я могу указать это, скажем, на установку exe для Flash, отправить ярлык пользователю, указывающему на мой «runasadmin» exe, и пользователь может обновить Flash.

Мандаты и имя файла для запуска будет скрыт от пользователя (в пределах скомпилированный ехе)

Является ли это безопасно, конечно, нет. Но мысль о том, чтобы поразить сотни рабочих станций пользователей, заставляет нас взглянуть на альтернативы :)

Возможно ли это? У кого-нибудь есть опыт в этой области?

+0

Возможно, нет - у XP нет UAC, и я считаю, что вызов API-интерфейса Impersonate требует повышенных привилегий с самого начала. –

+0

Закрыто? Ламе. Это не точный * дубликат. В моем случае меня не интересует UAC - я использую XP, и концепция «Run As Administrator» не существует, как в Vista или Windows 7 –

ответ

2

Попробуйте использовать вызов Windows API «CreateProcessWithLogonW» - я использовал это с .Net с большим успехом.

1

Похоже, что вы работаете в корпоративном ИТ-отделе, и в этом случае я полагаю, что вы можете создавать учетные записи AD, обладающие правами администратора на компьютерах пользователей. Как только вы это сделаете, вы можете создать приложение .NET, которое P/Invokes до CreateProcessAsUser запускает необходимый процесс установки под учетной записью администратора.

Некоторые данные о том, как P/Invoke этот метод из .NET можно найти here

Сказав, что развертывание программного обеспечения для нескольких машин пользователей является общим требованием, и существует целый ряд продуктов, доступных, которые будут сделайте это для вас.

3

Только так вы знаете, Microsoft уже предоставляет утилиту командной строки для запуска программ в качестве другого пользователя, включая администратор: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/runas.mspx?mfr=true

Вы можете создать ярлык, который выполняет RunAs, с соответствующими параметрами командной строки и вашей программой будет выполняться одним щелчком мыши.

+0

Я был бы рад работать с этим, но не кажется, что вы можете включить пароль в команду. Дело в том, что я предоставляю доступ администратора для запуска программы без участия администратора и не отпуская пароль администратора (просто шучу - это не соображение!) –

1
  System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo("path", "args"); 
     processStartInfo.Verb = "runas"; 

     using (System.Diagnostics.Process process = new System.Diagnostics.Process()) 
     { 
      process.StartInfo = processStartInfo; 
      process.Start(); 
      process.WaitForExit(); 
     } 
Смежные вопросы