C # форма приложения системной учетной записи - PullRequest
0 голосов
/ 11 февраля 2009

Можно ли запустить приложение формы Windows или консольное приложение под системной учетной записью? Например, приложение asp.net может работать под системной учетной записью, изменив файл конфигурации машины:

<processModel  userName="machine" password="AutoGenerate" /> 

Это дает больше привилегий программе ...

Ответы [ 4 ]

2 голосов
/ 11 февраля 2009

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

1 голос
/ 11 февраля 2009

Да. Вы можете запустить любое приложение под системной учетной записью. Один из способов - запустить его как запланированное задание или с помощью утилиты командной строки «at».

К сожалению, однако, начиная с Windows Vista, приложения, запускаемые таким образом, не могут взаимодействовать с пользователем, так как они запускаются в другом сеансе.

Это означает, что запуск WinForms (или любого другого графического интерфейса, на самом деле) приложения подобным образом бессмысленно. Аналогично для консольного приложения, если вы хотите увидеть вывод.

Если это один раз, вы, вероятно, можете жить с этим. В противном случае вам следует подумать о создании службы Windows, которую можно настроить для работы под любой учетной записью пользователя (включая SYSTEM). Если вы хотите взаимодействовать с ним, вам необходимо реализовать отдельное приложение, которое взаимодействует с ним (например, через .NET remoting).

0 голосов
/ 11 февраля 2009

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

Как упоминает lassevk, если вам нужно сделать это один раз или изредка, вы можете использовать runas для запуска в другом контексте безопасности, но при этом иметь интерактивный графический интерфейс / консоль.

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

0 голосов
/ 11 февраля 2009

Разве вы не можете сделать это, запустив его из запланированной задачи в Windows?

...