从Windows服务以管理员身份启动程序

时间:2019-04-04 03:31:18

标签: windows service process admin

我有一个在SYSTEM帐户下运行的Windows系统服务,需要启动具有管理员权限的实用程序。 该实用程序没有窗口,也不会与用户互动。它实际上是一个安全应用程序,它为企业使用低级别的监视来监视用户的行为。

如果我以admin帐户的管理员权限启动该服务,则一切正常。它会启动该实用程序,并且按键记录会按预期进行。

但是,当服务在SYSTEM accound上运行时,该实用程序会启动,但是按键记录将不起作用。查看该过程,我可以看到服务和实用程序都在SYSTEM帐户下。

我尝试了很多组合

ProcessStartInfo myProcess = new ProcessStartInfo(fileName, parameters);
myProcess.UserName = "admin";
myProcess.Domain = "domain";
myProcess.Password = new NetworkCredential("", "password").SecurePassword;
myProcess.UseShellExecute = false;
myProcess.ErrorDialog = true;
myProcess.Verb = "runas";
myProcess.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(myProcess);

我尝试了以上所有方法,但都没有碰到运气。该过程始终作为SYSTEM启动。 我已经尝试了全部三个

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
在公用程序的app.manifest中也

我什至尝试使用WindowsImpersonationContext进行模拟,但无法启动该过程。

这可能吗?

我不希望让系统服务启动该过程,最好使用TaskScheduler安排该实用程序的运行时间,如果该实用程序已关闭,则可以通过TaskScheduler重新启动该服务

0 个答案:

没有答案