如何从Windows服务启动进程

问题描述:

我正在使用自己的反恶意软件扫描程序(SharpDefender),它当然需要管理员来处理某些内容。我一直在互联网上搜索如何在没有UAC干扰用户的情况下以管理员身份启动它,并因此发布了Windows服务。所以之后,我想为我的应用程序创建一个Windows服务,但似乎无法启动我的程序的.exe。我检查了服务与桌面交互的选项。如何从Windows服务启动进程

有甚至从这样的代码开始的过程的可能性:

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

难道我做错了什么,或是需要其他的方式开始与提升权限的可执行文件?

+0

怎么你的代码会失败?有没有错误信息? – CoreTech 2012-03-15 02:15:01

你可以选择你的服务登录为谁。因此,您应该可以在管理员帐户下运行您的服务,因此它执行的任何操作都应具有该访问权限。

Here是一个链接,说明如何在您的代码中执行此操作。或者,像我一样,您可以打开Services.exe,找到您的过程,右键单击并选择属性,然后进入登录选项卡并放入信息。

+0

这将是一个合理的答案,但对另一个问题。你的问题可能会帮助那些努力使自己的Windows XP不安全的人,但在微软关闭安全漏洞一半后,有人在Vistas或更新版本上与UAC苦苦挣扎。 – 2012-03-14 22:48:31

我有一个服务,可以在预定义的时间运行应用程序(很像计划任务,但在服务器上运行而不需要记录会话)。

我在OnStart方法中调用私有方法(StartService),它启动一个新线程(WorkerFunction)。在该线程我有下面的代码以启动应用程序:

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

希望这有助于。

真诚,

何塞米拉