以编程方式启动服务

本文关键字:服务 启动 方式 编程 | 更新日期: 2023-09-27 18:12:18

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

好的,首先,这是我的出发点:我把一个普通的服务包装到我自己的类中,这个类继承自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)没有足够的权限访问该服务?

以编程方式启动服务

我在stackoverflow上找到了这篇文章。我认为这个答案张贴在那里也可以适用于这里。

见下面的链接Windows 7中的ServiceController权限

我以前遇到过这个问题,对我来说也是基于权限的。我希望错误信息能更清楚一些。

我建议你看看这篇文章:c#。NET:获得管理员权限?-答案中提供了一个关于升级到管理权限的很好的教程