我需要检查和编辑 Windows 服务的StartName
.
我通过 WMI API 创建了这个解决方案:
using (var service = new ManagementObject($"Win32_Service.Name = '{my_name}'"))
{
using (var inParams = service.GetMethodParameters("Change"))
{
inParams["StartName"] = value;
ManagementBaseObject outParams = service.InvokeMethod("Change", inParams, null);
outParams.Dispose();
}
}
当我使用已以管理员身份启动的 Visual Studio 的新控制台项目应用程序调用此代码时,它工作正常。
但是当我通过记录为 LocalSystem 的 Windows 服务调用它时,我遇到了一个异常:
System.Management.ManagementException:提供程序加载失败。在 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) 在 System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options) ...
在这种情况下我错过了什么?什么权限/应用程序状态或我必须更改什么才能StartName
通过 Windows 服务编辑服务?