我使用此代码启动 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 位)上对此进行了测试。