2016-06-10 106 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