我有一个在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重新启动该服务