如何从Windows服务启动进程

时间:2012-03-14 22:33:50

标签: c# process windows-services

我正在使用我自己的反脚本软件扫描程序(SharpDefender),当然它需要管理员来处理一些事情。我一直在互联网上搜索如何在没有UAC干扰用户的情况下以管理员身份启动它,结果是Windows服务。所以在那之后我想为我的应用程序创建一个Windows服务,但它似乎无法启动我的程序的.exe。我已经检查了该服务与桌面交互的选项。

是否有可能从这样的代码开始进程:

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

我做错了什么或是否有其他方法可以使用提升的权限启动可执行文件?

2 个答案:

答案 0 :(得分:1)

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

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

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

希望这有帮助。

此致

JoséMira

答案 1 :(得分:-1)

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

Here是一个链接,讨论在您的代码中执行此操作。或者,像我一样,您只需打开Services.exe,找到您的进程,右键单击并选择属性,然后进入“登录”选项卡并输入信息。