是你的OS X64嗎?如果是這種情況,對於「LocalMachine \ Software」,有兩個不同的節點:x64應用程序爲Normal,x86應用程序爲Wow6432Node。
一個示例應用程序來演示上述。
using System;
using Microsoft.Win32;
namespace ConsoleApplication1
{
internal class Program
{
public static void Main()
{
String[] values = Registry.LocalMachine.OpenSubKey(@"SOFTWARE").GetSubKeyNames();
foreach (String value in values)
Console.WriteLine(value);
}
}
}
這是我的機器上的代碼的輸出時,控制檯應用程序內置在86:
的Adobe
AGEIA科技
酒精軟
蘋果電腦公司
蘋果Inc.
Aureal
Avira
Azureus
BazisSoft
C07ft5Y
佳能
思傑
...
這是我的機器上輸出時,控制檯應用程序內置在64:
的7-Zip
AGEIA技術
Apple Computer,Inc.
Apple Inc.
個ATI技術
佳能
類
客戶
...
正如你看到的,輸出變化基礎上,應用程序是否是x86或x64很多。
編輯: A similar question之前被問到StackOverflow。
嗯...我可能誤會了,那麼 - 它**可能**可能是重複的。不過,我不清楚如何處理它。我不知道我的程序將運行在什麼系統上,我需要檢查某個位置的密鑰值(例如'software/windows/hazaa')。實際的路徑,我只能在我的電腦上查看,**希望**在其他機器上是一樣的。建議? –
另外,當應用程序列在**子路徑中時,這意味着什麼!?那麼是48位呢? (32和64的平均值是48,哈哈...) –
@KonradViltersten如何檢查此註冊表項>通過InstallShield或類似的安裝程序或C#控制檯應用程序?如果其InstallShield(或非託管應用程序)可以使用某些關鍵字訪問32位和64位註冊表項。如果它的C#控制檯應用程序在x86中構建,它將始終創建並訪問32位註冊表。如果在AnyCPU中,它將訪問32位機器中的32位和64位機器中的64位。如果註冊表項由一個應用程序(例如32位)創建,並且您需要從AnyCPU應用程序檢查它,問題纔會出現。 –