Как спроектировать приложение автозапуска, работающее от имени администратора в Windows Vista / 7? - PullRequest
2 голосов
/ 25 февраля 2010

Мне нужно, чтобы мое приложение запускало и останавливало службы Windows на основе определенных событий. Дело в том, что это приложение должно запускаться от имени обычного пользователя (для остановки служб), а также для автоматического запуска при запуске Windows. Кроме того, он должен быть в systray с пользовательским интерфейсом.

Какие у меня есть варианты?
Я полагаю, что есть как минимум две возможности:

  1. Чтобы запустить приложение автоматически, поместив его в папку «Автозагрузка» или в ключ .. \ Run в реестре. Но вопрос в том, можно ли это сделать, если при каждом запуске Windows не появляется диалоговое окно с подсказкой UAC? ​​
  2. Разработка службы Windows, которая устанавливается для запуска в качестве системы, с отдельным приложением с графическим интерфейсом в системном трее. Но каковы возможности IPC, которые я имею здесь для связи между повышенным сервисом и обычным приложением sys tray?

Есть мысли и рекомендации?

Ответы [ 4 ]

1 голос
/ 26 февраля 2010

Обязательно используйте вариант 2 и, в частности, используйте WCF (Windows Communication Foundation) для связи со службой Windows с помощью привязки wsHTTPS, чтобы можно было подтвердить, что вошедшему в систему пользователю разрешено выполнять действия со службой WCF, размещенной в Windows. Сервис.

0 голосов
/ 27 февраля 2010

Вы можете использовать функцию запланированных задач, чтобы выполнить то, что вы хотите. Для составления расписания есть возможность запланировать запуск программы при каждом входе пользователя в систему. Существуют варианты запуска задачи с альтернативными учетными данными.

Я не могу сказать вам, как настроить это программно (вероятно, есть интерфейс WMI для этого), но это легко сделать через пользовательский интерфейс.

0 голосов
/ 26 февраля 2010

На самом деле с номером 1 вы можете объединить несколько процессов в цепочку, чтобы достичь повышенного уровня без диалога UAC. Как это

Первый процесс-> Запуск от имени администратора (потребуется указать учетные данные) -> запустить другой процесс, используя ShellExecute и предоставляя глагол Runas. -> Ваш окончательный процесс

0 голосов
/ 26 февраля 2010

Для номера 1, чтобы запустить приложение с правами администратора, его невозможно запустить без всплывающего диалогового окна UAC или без пароля администратора

Для номера 2 это интересная тема, здесь есть хорошая статья с примерами и исходными кодами: http://www.codeproject.com/KB/threads/process_communication.aspx тема .net remoting. я уверен, что это лучший способ общения между различными приложениями.

...