如何从应用程序启动 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 提升名字对象。