2011-08-05 17 views
4

我有一個C++ Win32 DLL,由在Windows7的requireAdministrator的requestedExecutionLevel中運行的應用程序調用。如何讀取已在StdUser級別下創建的HKEY_LOCAL_MACHINE Software MyApp密鑰?

如何讀取已在StdUser級別下創建的HKEY_LOCAL_MACHINE \ Software \ MyApp項?

此鍵在HKEY_USERS \ _Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node

從來就發現this article about it自動創建,但它僅僅是指有關運行與代碼注入的過程。

謝謝!

回答

1

如果您有64位操作系統,您可以嘗試設置權限TRegistry *reg=new TRegistry(KEY_WOW64_64KEY)。如果你有32位操作系統,reg->OpenKey("Software"),你自動重定向到你的密鑰,那麼你可以用這個密鑰來操作。

+1

什麼是TRegistry? – Gabe

2

你不能。

你說StdUser應用程序試圖將設置寫入HKLM\Software\MyApp並最終寫入虛擬化位置HKEY_USERS\<UserSID>_Classes\VirtualStore...`。要閱讀它,你必須知道UserSID;如果有多個用戶,則每個用戶可能擁有寫在該密鑰中的不同數據。


對於其清單中有requestedExecutionLevel的進程關閉虛擬化。有關如何修改虛擬化行爲的信息,請參閱Controlling Registry Virtualization部分。

相關問題