为什么C#WMI ManagementObject.InvokeCommand工作和setProperty放置了不

问题描述 投票:0回答:1

是否有一个原因,下面的工作两个例子试图设置服务启动模式时,只有1?

    ManagementObjectCollection services = new ManagementObjectSearcher(scope, query).Get();

    foreach (ManagementObject service in services)
    {
        // WORKS
        service.InvokeMethod("ChangeStartMode", new object[] { ServiceStartMode.Manual });
        // DOESN'T WORK
        service.SetPropertyValue("StartMode", ServiceStartMode.Manual);
        service.Put();
    }
  • 具有管理员运行
  • 如果印刷SetPropertyValue不给一个错误,并显示更新后的值,但它从来没有在WMI自动更新。 Windows服务的控制台显示,只有在使用时,InvokeMethod正确的值。

连接选项:



var scope = new ManagementScope(@"root\cimv2", new ConnectionOptions
            {
                Impersonation = ImpersonationLevel.Impersonate,
                Authentication = AuthenticationLevel.Connect,
                EnablePrivileges = true
            });
c# wmi
1个回答
0
投票

问题是,绝大多数Win32_Service属性都是只读的,并且只是为了通过该类公开的方法进行修改。你可以看到,在类的定义

STARTMODE - 字符串预选赛:CIMTYPE,描述,覆盖,读取,ValueMap,价值观

© www.soinside.com 2019 - 2024. All rights reserved.