簡體   English   中英

Registry API 32 vs 64bit,以及VS2010設置

[英]Registry API 32 vs 64bit, and VS2010 setup

我們有一個使用幾個注冊表項的.net 4.0應用程序,以及一個在安裝程序中創建這些項的vs2010安裝和部署項目

問題-(默認)RegEdit顯示鍵存在,但.net代碼在OpenSubKey上使用正確的路徑(包括\\)返回null

事實證明,這是由於每個KB305097的 32和64位注冊表

並且需要諸如

RegistryKey someFunc()
{
    var r64o32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, 
                Environment.Is64BitOperatingSystem  ? RegistryView.Registry64 :    
           RegistryView.Registry32);

    return r64o32.OpenSubKey(regKey);
}

但是我無法測試上面的代碼,因為我沒有可用的32位計算機,但是該應用程序也需要在32位計算機上可用

所以尋求幫助-

  1. 上面的方法對64 / 32bit都正確嗎?
  2. vs2010安裝程序項目創建的安裝程序是否根據計算機在64/32注冊表上安裝了定義的注冊表項?
  3. 還有其他陷阱嗎?

使用OpenBaseKey ,不需要在RegistryView上做特殊的大小寫,這是在詢問注冊表的特定視圖,而不管您如何編譯應用程序

RegistryKey r = Microsoft.Win32.RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
                                                        RegistryView.Registry64);

還請記住,如果您使用的是32位計算機,則OpenBaseKey將僅回退到Registry32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM