Процесс C # - отключить запрос контроля учетных записей?

1

Вопрос:

Я вызываю командный файл для запуска указанной DLL в MSTest.exe с помощью объекта Process.

Код:

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

Я делаю это в настоящее время, устанавливая свойство verb процесса для runas, как показано:

 try
 {
     _process.StartInfo.Verb = "runas";
     _process.StartInfo.CreateNoWindow = true;
     _process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
     _process.StartInfo.Arguments = testLocation + " " + testDll;
     _process.StartInfo.FileName = batchFileLocation;
     _process.Start();
     _process.WaitForExit();
 }
 catch (Exception ex)
 {
     throw ex;
 }

Проблема:

Это выполняется так, как ожидалось, но приглашение контроля учетных записей (UAC) просит подтвердить, что я хочу, чтобы процесс запускал.exe.

Поскольку этот код является частью автоматизированного процесса, у меня не может быть никакого человеческого ввода, чтобы нажать кнопку "Да" в подсказке, как я могу отключить приглашение UAC?

  • 0
    Вы не можете пропустить приглашение UAC, если приглашение UAC вызвано процессом, который требует повышения от процесса, который не является повышенным. Это по замыслу.
Теги:
process
uac

1 ответ

0
Лучший ответ

Вы не можете обойти приглашение UAC.

Спросите себя: что бы вы сделали, если бы вы делали это в Windows XP?

Представьте, что вы работали в операционной системе, у которой не было UAC. Что бы вы сделали dll? У вас больше нет удобства UAC, и вместо этого вы всегда работаете как обычный пользователь. Что бы сделал ваш тестовый режим?

  • врезаться?
  • не прошел тест?

Если вам не нравится диалог UAC, вы можете отключить его. Но вы не будете в лучшей ситуации, потому что теперь вы похожи на то, что вы были в Windows XP: стандартный пользователь и нет простого способа выйти из него.

Реальное решение

Реальное решение заключается в том, чтобы исправить то, что делает ваша dll, которая защищена. Например, если это DLL COM, и саморегистрация не работает, потому что вы пытаетесь написать HKLM, тогда вам нужно

  • предоставить полный доступ к узлу HKLM\Software\Classes

Если ваша dll сбой, потому что вы пытаетесь записать в C:\Program Files, вам необходимо изменить параметры безопасности в C:\Program Files чтобы получить доступ.

Решение заключается в том, чтобы исправить то, что терпит неудачу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню