2011-11-25 62 views
3

我一直在InstallScript中遇到問題,以獲取32位和64位安裝的註冊表項列表。RegDBQueryKey無法同時列出32位和64位密鑰的密鑰

我的機器是Windows Server 2008 64位。我可以在這臺機器上安裝SQL Server 2008 32位版本或64位版本。

現在在安裝過程中,我需要知道是否安裝了任一SQL Server版本。

按我的理解,

  • 64位機器上的64位應用程序存儲在Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall
  • 64位機器上的32位應用程序存儲在Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall中。

我寫了一個函數,它應該使用RegDBQueryKey函數來搜索SQL Server安裝的這兩個位置。

即使我通過"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"RegDBQueryKey,它也列出了Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall的密鑰。

任何人都可以幫助我解決這個問題嗎?

回答

3

設置該標誌您的通話之前RegDBQueryKey:

REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY; 

這將禁用默認轉發到關鍵的64位版本,並給你的32位版本。它適用於全球,所以當你完成後一定要重置標誌使用:

REGDB_OPTIONS = REGDB_OPTION_USE_DEFAULT_OPTIONS; 
+0

+1爲底線......以及提醒_reset國旗done_時。我遇到的這個問題導致我回答這個問題和答案是因爲沒有做到這一點! – J0e3gan