我在註冊表中創建了一個子項HKEY_LOCAL_MACHINE\SOFTWARE\MyApp\APIConnector
。當我沒有啓動應用程序運行時使用Visual Studio的即時窗口加載此子項時,我可以讀取子項。無法繞過註冊表虛擬化
但是,當我的應用程序查找HKEY_LOCAL_MACHINE\SOFTWARE\MyApp\APIConnector
時,它無法找到它。它甚至找不到HKEY_LOCAL_MACHINE\SOFTWARE\MyApp
。就好像還有一個不同的
但是,當我在調試模式下運行應用程序並暫停時,完全相同的代碼無法找到HKEY_LOCAL_MACHINE\SOFTWARE\MyApp
,更不用說HKEY_LOCAL_MACHINE\SOFTWARE\MyApp\APIConnector
。
經過一番探索,看起來我已經成爲註冊表虛擬化的受害者。所以我添加了一個清單,使應用程序需要管理員權限(UAC對話框),但註冊表虛擬化仍在進行。微軟關於此事的文件聲稱,情況並非如此。幫幫我!
也許你受到Wow64註冊表重定向的影響,而不是(或?)註冊表虛擬化:http://msdn.microsoft.com/en-us/library/aa384253.aspx Windows確實有很多煙霧和訪問註冊表時正在進行的鏡像。 – 2012-03-19 05:24:23
是的,WoW64是罪魁禍首。出於某種原因,程序集針對x86而不是Any CPU。我改變它到任何CPU和它的工作。把你的評論變成答案,我會接受它。謝謝:) – 2012-03-19 13:45:24
@Steve你真的不想要求管理員權限。 – 2012-03-19 13:50:03