2016-06-10 41 views
4

设置试图从远程服务器的注册表拉自动更新设置。出于某种原因,即使手动检查密钥是否为1-4,它也会返回0。我忽略了什么?下面的代码片段:自动更新通过WMI

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"; 
} 
+0

任何人有什么想法?现在我已经尝试了多种东西,并获得了相同的结果。 – Sparhawk

回答

1

我想排除的过程,可能有助于在这里...

1)这是发生在一台服务器或者是你在所有服务器上得到这个?在你自己的本地机器上如何?它是Windows版本的东西?例如,它似乎我的Windows 10框不显示您正在寻找的SubKey名称。

2)你还可以得到零,如果你改变的sValueName为“富”?值0是否表示错误?

3)你可以把手表放在outParams并查看已经返回什么值?

4)你是否正在阻止UAC,防火墙或其他权限问题?你能否对这个服务器执行其他的WMI命令而没有任何问题?你需要以管理员身份运行以使其工作吗?

5)您是否获得了其他异常或返回值?我猜你已经在这里发布了一部分代码,所以这段代码是否在try/catch块中?

对不起,如果这听起来不明确或简单,但我认为你可能需要看看什么工作,什么不看,如果你可以识别模式。

+0

检查Get操作的返回代码并查看API的错误参考是一个很好的做法...... – 2016-09-08 02:30:03

+0

1.即使密钥存在,也会在所有服务器上发生。 2.不确定如何将值更改为foo。 3.返回值为0 4. UAC关闭并禁用防火墙。是的,所有其他WMI查询都不会返回问题。已尝试以管理员身份运行服务器的管理员。 5.正确,只是张贴片段。 – Sparhawk

+0

返回值返回2.我可以通过命令提示符调用regkey来重现此操作。标准提示返回访问被拒绝。提升到管理员正确返回密钥。将WMI提升为远程服务器管理员的最简单方法是什么? – Sparhawk