我关注了 torak链接,我了解有关服务权利的关键区别:
- 服务拥有与“运行身份”用户相关的权利
- 服务具有不同的权限来控制服务(即启动/停止它)
所以,要启动服务我需要修改服务控制权限。
好吧,我已经完成了一个名为 Service1 的 Windows 服务,并使用 WIX 制作了一个安装程序。在安装过程中,我调用ServiceInstall
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes"
Name="Service1" DisplayName="Service1"
Description="Service1 description"Start="demand"
Account="NT AUTHORITY\LocalService"
ErrorControl="ignore" Interactive="no" >
</ServiceInstall>
然后我有一个名为 TestProgram 的客户端程序,我尝试在其中启动服务:
var service = new ServiceController("Service1");
service.Start();
显然它不会在没有提升 TestProgram (在普通用户帐户下运行)的情况下启动服务。
所以解决方案是使用PermissionEx标签指示 WIX 允许用户组的成员(例如)启动/停止服务:
<util:PermissionEx User="Users" ServiceStart="yes" ServiceStop="yes">
</util:PermissionEx>
希望这可以帮助。谢谢你们。