Программно выполнить приложение в Vista - PullRequest
2 голосов
/ 15 июня 2009

У меня есть приложение, которое автоматически запускает приложение обновления при запуске. Однако, когда первое приложение запускается и видит, что требуется обновление, оно запускает его и завершает работу из-за безопасности в Vista. Если я запускаю обновление вручную как администратор, то он работает правильно.

1) Как я могу сделать это автоматически из первого приложения?

2) Если я установил свойства для запуска с правами администратора, я получу диалоговое окно безопасности ... как запустить его без диалогов безопасности / разрешений Vista?

Спасибо за помощь !!

Ответы [ 3 ]

4 голосов
/ 15 июня 2009

Итак, вы хотите запустить установку, требующую прав администратора без прав администратора ? Потому что, вы знаете, с включенным UAC, запуск приложения с правами администратора требует диалога по определению. В этом весь смысл.

Даже не пытайся. Посмотрите на Firefox, достойное приложение с автоматическим обновлением. Вы должны будете подтвердить диалог согласия для каждого обновления, и это нормально. Потому что, если пользователь этого не хочет, он может отключить UAC. Но это его проблема, а не ваша. Вы не должны отключать UAC из / для вашей программы. Это как гость, которому нужно открыть все двери, чтобы войти, когда можно просто позвонить в звонок у входной двери .

Вставить манифест в программу обновления, которая указывает requireAdministrator. Откроется диалоговое окно согласия, если для пользователя включен UAC, и будет работать без сбоев, если для пользователя отключен UAC.

Относительно решения Reed Copsey 1: Если ваш апдейтер является службой, людям это может не понравиться. Допустим, если вы не пользуетесь доверием, скажем, антивирусной компании, это может серьезно повредить вашей репутации.

1 голос
/ 15 июня 2009

Если вы пытаетесь сделать это в своей собственной системе, отключив UAC, , как предложено I3a0 , будет работать.

Если это для программного обеспечения, которое вы развертываете на других системах, я боюсь, что нет прямого способа сделать это. Отказ от диалога безопасности был бы полным поражением системы UAC - если бы был простой способ обойти это, это было бы бесполезно. Диалог существует, потому что вы делаете что-то, что требует повышенных разрешений.

Здесь есть несколько вариантов:

1) Перепишите ваш апгрейдер как сервис, используя некоторую форму IPC из вашего пользовательского приложения, которая уведомляет его об обновлении. Это позволило бы установить его в системе в качестве администратора и запустить в фоновом режиме, поэтому у него уже были права администратора, когда вы запрашивали обновление.

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

0 голосов
/ 15 июня 2009

Прямой подход - отключить UAC в Vista. Информацию о том, как это сделать, можно найти по адресу http://www.vista4beginners.com/How-to-disable-UAC. Очевидный недостаток этого метода заключается в том, что он затронет все приложения, что может представлять угрозу безопасности. Если вас беспокоит безопасность, вы можете использовать другой метод.

...