Как запустить процесс из службы Windows - PullRequest
2 голосов
/ 15 марта 2012

Я работаю над своим собственным сканером анти-скриптовых программ ( SharpDefender ) и, конечно, для некоторых вещей требуется Администратор. Я искал в Интернете, как я могу запустить его как администратор, не нарушая UAC пользователя, и в результате появилась служба Windows. Поэтому после этого я хотел создать службу Windows для своего приложения, но, похоже, он не может запустить .exe моей программы. Я проверил возможность взаимодействия службы с рабочим столом.

Есть ли возможность запустить процесс из кода, подобного этому:

Process sdef = new Process();
sdef.StartInfo.Filename = locApp + "\\sdefender.exe";
sdef.StartInfo.Arguments = "-hidden";
sdef.Start();

Я что-то не так делаю или есть другой способ запустить исполняемый файл с повышенными правами?

Ответы [ 2 ]

1 голос
/ 29 марта 2012

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

В методе OnStart у меня есть вызов частного метода (StartService), который запускает новый поток (WorkerFunction). В этой теме у меня есть следующий код для запуска приложения:

Process _proc = Process.Start ( _Program, _Arguments );

Надеюсь, это поможет.

С уважением,

Хосе Мира

0 голосов
/ 15 марта 2012

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

Здесь - это ссылка, которая говорит об этом в вашем коде. Или, как и я, вы можете просто открыть Services.exe, найти свой процесс, щелкнуть правой кнопкой мыши и выбрать свойства, затем перейти на вкладку «Вход в систему» ​​и ввести информацию.

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