是否可以確定給定的註冊表項是否被重定向?如何確定註冊表項是否被WOW64重定向?
我的問題是,我想從32位應用程序以通用方式枚舉32位和64位註冊表視圖中的註冊表項。我可以簡單地打開每個鍵兩次,首先使用KEY_WOW64_64KEY,然後使用KEY_WOW64_32KEY。但是,如果密鑰沒有重定向,則會給出完全相同的密鑰,並最終枚舉兩次完全相同的內容;這是我想要避免的。
我的確發現了一些documentation,但它看起來像唯一的方法是檢查配置單元並對密鑰進行一堆字符串比較。我想到的另一種可能性是嘗試在每個子項上打開Wow6432Node;如果它存在,則密鑰必須重定向。即如果我試圖打開HKCU \ Software \ Microsoft \ Windows,我會嘗試打開以下鍵: HKCU \ Wow6432Node,HKCU \ Software \ Wow6432Node,HKCU \ Software \ Microsoft \ Wow6432Node和HKCU \ Software \ Microsoft \ Windows \ Wow6432Node。不幸的是,文檔似乎暗示重定向的關鍵字的孩子不一定被重定向,因此路由也有問題。
那麼,我在這裏有什麼選擇?
理想情況下,我們希望將整件事重建爲x64,但這仍然是我們前進的道路。與此同時,這是一種權宜之計。該應用程序基本上是一個系統信息/掃描儀組件。例如,檢查註冊表以查看各種運行鍵中的內容。我知道這些特定的鍵恰好被重定向,但我想要一個通用的方法來確定這個,所以我不必事先知道。 – Luke 2010-04-22 17:57:44
正如我所說,我相信正確的方法是使應用程序x64,但你可以用其他方式。查看我的編輯 – SergGr 2010-04-23 15:14:47
我已經知道如何訪問不同的視圖;問題在於無法確定給定密鑰是否具有備用視圖。嘗試在沒有密鑰的密鑰上打開備用視圖會爲您提供共享視圖。 – Luke 2010-04-23 18:16:21