2017-10-04 128 views
0

我們有一個32位Windows應用程序,廣泛使用註冊表。除此之外,我們將用戶名/機構和許可證密鑰存儲在註冊表中。有些用戶似乎在將數據輸入到安裝程序時遇到問題;對他們來說,我們提供了一個帶有相關信息的.reg文件,但是這會導致64位Windows 7(以及其他人)的問題,因爲32位應用程序無法看到數據。我希望能夠使用32位版本的regedit,但是似乎並沒有將其定位到批處理文件中的便攜方式。有沒有人有什麼建議?如果解決方案失敗,我可以編寫一個創建鍵和值的32位應用程序:操作系統應該將數據放在與32位應用程序相同的位置。會找到他們,但.reg文件將是可取的。適用於32位和64位Windows的便攜式.reg文件?

我注意到Windows 7(64位)將存儲在HKEY_LOCAL_MACHINE/Software/Wow6432Node下的條目。我已經嘗試在.reg文件中指定這個(使用regedit),但是應用程序找不到鍵/值(我嘗試在HKEY_LOCAL_MACHINE/Software /以及HKEY_LOCAL_MACHINE/Software/Wow6432Node/in下存儲密鑰努力成爲便攜式)。

回答

0

Windows自動將32位應用程序的某些註冊表項重定向到64位版本的Windows for having separate settings for 32 and 64 bits programs(與System32SysWOW64文件夾發生的情況類似)。例如,要求HKEY_LOCAL_MACHINE/Software/App Name的32位應用程序將被重定向到HKEY_LOCAL_MACHINE/Software/WOW6432Node/App Name(重定向對於應用程序是透明的,從其訪問HKEY_LOCAL_MACHINE/Software/App Name的角度來看)。

由於您直接使用.reg文件,並且註冊表編輯器是64位Windows中的64位應用程序,所以不會發生重定向,並且這些密鑰會寫入註冊表的64位部分。

這也是你的32位程序找不到HKEY_LOCAL_MACHINE/Software/WOW6432Node的原因,因爲它會被重定向到HKEY_LOCAL_MACHINE/Software/WOW6432Node/WOW6432Node

無論你提出的解決方案應該工作:

  • 使用32位應用程序用於創建密鑰將工作,因爲重定向將發生在默認情況下。

  • 創建這兩個鍵也應該用作另一個「垃圾」鍵的代價,在32位Windows中將使用常規鍵,而在64位Windows中,您的應用程序將被重定向到WOW6432Node。這應該不是問題,因爲WOW6432Node在32位版本的Windows中未使用(它不存在事件)。