2011-10-31 56 views
0

在我的C#應用​​程序我無法讀取某些註冊表項,無法讀取某些值從註冊表

RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\NameOfSoftware\\"); 

RegistryKey key1 = Registry.LocalMachine.OpenSubKey("Software\\NameOfSoftware\\Version1\\Databases"); 

RegistryKey key2 = Registry.LocalMachine.OpenSubKey("Software\\NameOfSoftware\\Version2\\Databases"); 

第一個出現的主要關鍵是,和鍵1和鍵2的子項。我可以讀取key1,但不能讀取key2。

我可以在註冊表中看到這兩個鍵與regedit。很有趣的是,雖然如果我這樣做,

key.GetSubKeyNames() 

我得到這樣一個名單,

Version1, 
SomethingElse1 
SomethingElse2 

凡「SomethingElse」鍵是我無法用註冊表編輯器看到的鑰匙?版本2顯然不存在,但我可以用註冊表看到它。

更新: 所以澄清一些事情。工作的關鍵(版本1)已經在那裏。版本2被添加,因爲我導出了版本1的密鑰,編輯文件以Version2替換版本1並將其重新導入。所以,如何在沒有此問題的情況下複製密鑰?

+1

從你的描述,我不能直接追蹤到它的任何這些,但這可能與密鑰,x64 vs x86或註冊表虛擬化的權限有關。 –

+0

http://bytes.com/topic/c-sharp/answers/788151-registry-localmachine-opensubkey-returning-null註冊表虛擬化聽起來是可能的。 – peter

回答