如何从应用程序启动 windows 服务
How to start windows service from application
我有一个 Windows Service
,我想使用 ServiceController
启动它。该服务以 LocalSystem
运行。当我尝试 Start
它时,我得到:
System.InvalidOperationException: 'Cannot open [service] service on
computer '.'.'
Inner Exception Win32Exception:Access is denied
主要
static void Main(string[] args) {
using (ServiceController controller = new ServiceController("someService")) {
controller.Start();
}
}
我能否以某种方式以编程方式提升权限以启动服务(即使我需要将 P/Invoke
用于 Winapi
?)。
你确实需要提升。这需要创建一个新进程来启动该服务,或者明确地使用 runas
shell 动词,或者使用 COM 提升名字对象。
我有一个 Windows Service
,我想使用 ServiceController
启动它。该服务以 LocalSystem
运行。当我尝试 Start
它时,我得到:
System.InvalidOperationException: 'Cannot open [service] service on computer '.'.'
Inner Exception Win32Exception:Access is denied
主要
static void Main(string[] args) {
using (ServiceController controller = new ServiceController("someService")) {
controller.Start();
}
}
我能否以某种方式以编程方式提升权限以启动服务(即使我需要将 P/Invoke
用于 Winapi
?)。
你确实需要提升。这需要创建一个新进程来启动该服务,或者明确地使用 runas
shell 动词,或者使用 COM 提升名字对象。