2011-11-21 22 views
4

我正在使用HKEY_LOCAL_MACHINE在安裝時設置變量。這些需要被機器上的所有用戶看到,並且只能由他們讀取。無法看到RegEdit中的某些HKEY_LOCAL_MACHINE條目

我使用Inno創建條目。它是以管理員身份運行的,所以它應該擁有足夠的權利,虛擬化不會啓動......或者我誤會了什麼?

我的應用程序可以讀取條目(甚至作爲Win7中的有限用戶),但我無法在RegEdit或RegEditX 3.0中看到它們。不過,我可以在RegEditX 2.0中看到它們。奇怪的。

我不明白爲什麼我的Delphi應用程序可以看到條目,但上面的RegEdit程序不能。

我相信這對於虛擬化來說可能有些事情(第一個答案在這裏:Cannot read config data from HKEY_LOCAL_MACHINE on Vista)。

但是,我甚至無法在HKCU \ Software \ Classes \ VirtualStore \ MACHINE \ SOFTWARE下看到有問題的註冊表項。

HKEY_LOCAL_MACHINE是否過時,我應該完全避免它?開發人員現在應該如何爲所有用戶保存數據 - 只需在{commomappdata}中保存數據,通常是C:\ Program Data ...?

+2

如果您使用的是64位版本,則可能需要查看「HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node」。 – Polynomial

+0

@Polynomial當然這就是答案。你爲什麼不張貼它? –

+0

不完全確定,但看起來像這樣。我會發佈一個答案。 – Polynomial

回答

18

64位版本的Windows通過「Windows on Windows」(WoW)子系統模擬32位功能。在註冊表中,出於兼容性原因,他們將32位密鑰移至特殊的子密鑰。

鑰匙將在:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node

這是文件系統重定向器的註冊表模擬,它將system32映射到SysWOW64

有關Registry Redirector的MSDN主題可以找到更多詳細信息。

+0

謝謝。我以爲我瘋了,不能在註冊表中找到一些我知道藏在那裏的記錄! – Adam

+0

這節省了我花了很多時間。感謝和+1。 – Tarik