以编程方式启动服务

时间:2011-10-24 12:30:11

标签: c# .net c#-4.0 windows-services

我正在努力从另一个应用程序启动服务。

好的,首先,这是我的出发点: 我得到了一个包含在我自己的类中的常用服务,该服务继承自ServiceBase。 此外,我得到了一个ProjectInstaller实例,它继承自System.Configuration.Install.Installer并负责以正确的方式在系统上安装我的服务。

它有这些参数:

serviceInstaller1.ServiceName = "NameOfService";
serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Manual;
serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalService;

此ProjectInstaller输出通过通常的C#.NET安装项目安装。

该服务显示在系统控制中的GUI服务列表中 - >管理 - >服务。但我想知道的是,如果我使用cmd.exe并输入“net start”,该服务不会出现在服务列表中。

到目前为止我还有。 现在我想从另一个应用程序启动我的服务。此应用程序继承自

ServiceController

如果我想现在打电话

Start()

方法,我收到一个错误,告诉我该服务无法打开本地计算机。

我使用与上述相同的服务名称。我很困惑,因为我认为通过我的安装程序正确安装了服务。 或者我的应用程序(以及cmd.exe)是否没有足够的权限来访问该服务?

2 个答案:

答案 0 :(得分:1)

我在stackoverflow上发现了这篇文章。 我认为这里发布的答案也适用于此。

请参阅以下链接 ServiceController permissions in Windows 7

答案 1 :(得分:0)

之前我遇到过这个问题,它也是基于权限的。我希望错误信息更加明确。

我建议看一下这篇SO文章:C#.NET: Acquire administrator rights? - 看起来有一个关于升级到答案中提供的管理权限的好教程。

相关问题