Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过WMI自动更新设置_C#_Registry_Wmi - Fatal编程技术网

C# 通过WMI自动更新设置

C# 通过WMI自动更新设置,c#,registry,wmi,C#,Registry,Wmi,正在尝试从远程服务器的注册表中提取自动更新设置。出于某种原因,即使手动检查键为1-4,它仍返回0。我忽略了什么?下面的片段: ManagementScope msAutoUpdateReg = new ManagementScope(@"\\" + remoteServer + @"\root\DEFAULT:StdRegProv", connection); msAutoUpdateReg.Connect(); ManagementClass ci = new ManagementClass

正在尝试从远程服务器的注册表中提取自动更新设置。出于某种原因,即使手动检查键为1-4,它仍返回0。我忽略了什么?下面的片段:

ManagementScope msAutoUpdateReg = new ManagementScope(@"\\" + remoteServer + @"\root\DEFAULT:StdRegProv", connection);
msAutoUpdateReg.Connect();

ManagementClass ci = new ManagementClass(msAutoUpdateReg, new ManagementPath(@"DEFAULT:StdRegProv"), new ObjectGetOptions());
ManagementBaseObject inParams = ci.GetMethodParameters("GetDWORDValue");
inParams["hDefKey"] = 0x80000002; //HKLM
inParams["sSubKeyName"] = @"Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update";
inParams["sValueName"] = "AUOptions";
ManagementBaseObject outParams = ci.InvokeMethod("GetDWORDValue", inParams, null);
UInt32 auValue = (UInt32)outParams["uValue"];

if (auValue.ToString() != "0")
{
    if (auValue == 1)
    {
        string currentSetting = "Keep my computer up to date has been disabled in Automatic Updates.";
    }

    if (auValue == 2)
    {
        string currentSetting = "Notify of download and installation.";
    }

    if (auValue == 3)
    {
        string currentSetting = "Automatically download and notify of installation.";
    }

    if (auValue == 4)
    {
        string currentSetting = "Automatically download and scheduled installation.";
    }
}
else
{
    string currentSetting = "Unknown";
}

我想一个消除的过程可能会有帮助

1) 这是在一台服务器上发生的还是在所有服务器上都发生的?在你自己的本地机器上怎么样?它是Windows版本的东西吗?例如,“我的Windows 10”框似乎没有显示您要查找的子项名称

2) 如果将sValueName更改为“foo”,是否也会得到零?值0是否表示错误

3) 你能在输出参数上放一块手表,看看返回了什么值吗

4) 您是否被UAC、防火墙或其他权限问题阻止?您可以对该服务器执行其他WMI命令而不出现任何问题吗?您需要以管理员身份运行才能使其正常工作吗

5) 您是否获得了其他异常或返回值?我猜您只是在这里发布了部分代码,那么这段代码是否在try/catch块中


很抱歉,如果这听起来含糊不清或过于简单,但我认为您可能需要了解哪些有效,哪些无效,以确定是否可以确定模式。

有人对此有想法吗?我现在已经尝试了多种方法,得到了相同的结果。检查Get操作的返回代码并查看API的错误引用是一种很好的做法…1。即使密钥存在,也会在所有服务器上发生。2.不确定如何将值更改为foo。3.返回的值为0 4。UAC已关闭,防火墙已禁用。是,所有其他WMI查询返回时都没有问题。已尝试以管理员和服务器管理员的身份运行。5.正确,刚刚发布了代码段。返回值为2。我可以通过命令提示符调用regkey来重现这一点。标准提示返回拒绝访问。提升为管理员后,将正确返回密钥。对于远程服务器,将WMI提升为管理员的最简单方法是什么?