2012-08-31 34 views
0

好吧,我試圖拉一個註冊表項,它不會工作,每次我嘗試它拉空值。我嘗試以管理員身份運行單個exe文件以仔細檢查權限。我創建了一個執行相同功能的批處理文件,並且它工作正常,並且我也使用了相同的方法來在我的腳本的其他部分提取註冊表值,並且似乎無法找到問題。該程序運行良好,並顯示0錯誤。VB2010當我試圖拉註冊表項時出現空白

源代碼:

' Check Auto Update settings 
     Dim AUOptions_Value = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update", "AUOptions", Nothing) 
     Dim AUOptions_level 
     If AUOptions_Value = 4 Then 
      AUOptions_level = "Auto Update Options set to: Install Updates Automatically." 
      Display_AUOptions.ForeColor = Color.Green 
     ElseIf AUOptions_Value = 3 Then 
      AUOptions_level = "Download Updates but let me choose whether to install them." 
      Display_AUOptions.ForeColor = Color.Blue 
     ElseIf AUOptions_Value = 2 Then 
      AUOptions_level = "Check for updates but let me choose whether to download them and install them." 
      Display_AUOptions.ForeColor = Color.Blue 
     ElseIf AUOptions_Value = 1 Then 
      AUOptions_level = "Never check for updates." 
      Display_AUOptions.ForeColor = Color.Red 
     Else 
      AUOptions_level = "Unable to detect settings" 
      Display_AUOptions.ForeColor = Color.Red 
     End If 
     Display_AUOptions.Text = AUOptions_level 
    End Sub 

註冊表項:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update] 
"AUOptions"=dword:00000004 
+0

你作爲構建32位在64位操作系統上的應用程序?如果是這樣的話,你實際上會從'HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Wind ...'中讀取這個密鑰並檢查 –

回答

0

我想你正在編譯您的應用程序適用於x86和64位操作系統測試它。 在這種情況下,每次讀取註冊表都會被操作系統自動重定向到註冊表的不同子樹。請參見MSDN上32-bit and 64-bit Application Data in the Registry

操作系統改變這一

"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\" & _ 
"Windows\CurrentVersion\WindowsUpdate\Auto Update" 

注意你的註冊表路徑的OS是如何改變的子樹添加Wow6432Node。這裏存在你的問題,在64位操作系統中Wow6432Node內沒有WindowsUpdate子項。 (這是正確的,因爲這些設置是由64位操作系統管理)

解決您的問題,嘗試編譯爲AnyCPUx64

+0

我擁有Visual Basic 2010的獨立版本,你是如何將一個項目設置爲AnyCPU ?我到處都可以找到說我必須安裝整套西裝,這是很愚蠢的... 另外我知道整個註冊表的事情,我只是不認爲VB2010是槍戰開始改變我的價值觀沒有至少一些警告,這似乎是一個真正可怕的想法,默認構建選項應該保持代碼不變,並按原樣構建。 – user1451070

+0

我不知道這個命令是否可用於獨立版本的操作系統。轉到編譯菜單,選擇配置管理器,轉到平臺組合並選擇AnyCPU。如果不存在,選擇New並選擇AnyCPU作爲新平臺。轉到項目的屬性並轉到編譯頁面,將AnyCPU設置爲平臺(如果尚未設置)。 – Steve

相關問題