2011-09-05 125 views
0

我做錯了什麼?我沒有得到任何值回...閱讀註冊表項

Imports Microsoft.Win32 
... 
Dim s As String = "" 
Dim reg As RegistryKey 

reg =Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True) 
s = reg.GetValue("RtHDVCpl", "") 
MsgBox(s) 
reg.Close() 
+0

您是否收到任何錯誤的應用程序?值是否真的存在於註冊表中? – ChrisF

+0

該值存在,返回值只是一個空字符串 –

回答

1

如果你也不例外,那麼你可以安全地假定值不存在或有一個空字符串作爲它的值。

如果您確定該值實際存在,那麼下一個解釋是您的機器運行64位操作系統。在哪裏註冊表被虛擬化爲32位進程。他們將從HKLM \ Software \ Wow6432Node讀取值。而且你運行的是VS2010,它強制項目默認運行在32位。項目+屬性,編譯選項卡,向下滾動,高級編譯選項。將目標CPU更改爲AnyCPU。在Express版afaik中不可用,您必須手動編輯.vbproj文件。

2

嘗試messagebox.show(s.ToString)

Wehn編譯到32位在64位的操作系統,當鑰匙將在HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \節點創建。然而,創建它應該能夠讀回,即使你不能找到它,你預計REGEDIT.EXE