0

我使用此代码启动 Windows 服务

public static bool StartService(string serviceName, int timeoutMilliseconds, params string[] args)
{
    ServiceController service = new ServiceController(serviceName);
    try
    {
        service.Start(args);
        TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
        service.WaitForStatus(ServiceControllerStatus.Running, timeout);
        return true;
    }
    catch
    {
        return false;
    }
}

但是每次我尝试这段代码时,我都会被拒绝访问。
我知道这可能是由 UAC 引起的(运行此代码的 exe 未以提升的权限运行)。
我不清楚的是,如果我使用服务面板启动相同的服务,它会运行:为什么?服务面板应该以相同的用户权限打开,或者不是?
如何在没有提升权限的情况下使用我的代码启动此服务?

请注意,该服务不是用 C# 编写的,我也没有它的源代码。
我在 Windows 7(32 位和 64 位)上对此进行了测试。

4

0 回答 0