试图从远程服务器的注册表中提取自动更新设置。由于某种原因,即使手动检查密钥为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框未显示您要查找的SubKey名称。

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

3)您可以在outParams上放置手表并检查是否返回了哪些值吗?

4)您是否受到UAC,防火墙或其他权限问题的阻止?您可以对此服务器执行其他WMI命令吗?您是否需要以管理员身份运行才能使其正常工作?

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

抱歉,这听起来有些含糊或过于简单,但我认为您可能需要查看哪些有效,哪些无效,以查看是否可以识别模式。

10-04 20:17