2

SOに関する他の返信をいくつか確認しましたが、私が見る限り、これは私が得たヒットとは別の問題です.

RegEdit を開くと、一連のキーが表示されますが、プログラムからキーを一覧表示すると、次のようになります。

Registry.LocalMachine.OpenSubKey(@"SOFTWARE").GetSubKeyNames()

それらのいくつかがありません。アクセス権が関係しているのではないかと思ったので調べてみ.CurrentUserました。そこでも同じ行動が見られます。一部のサブキーはリストされていません。

私は何が欠けていますか?

4

1 に答える 1

3

あなたのOSはx64ですか?その場合、"LocalMachine\Software" には、x64 アプリ用の Normal と x86 アプリ用の Wow6432Node の 2 つの異なるノードがあります。

上記を示すサンプル アプリケーション。

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);
    }
  }
}

これは、コンソール アプリケーションが x86 でビルドされている場合の私のマシンでのコードの出力です。

Adobe
AGEIA Technologies
アルコール ソフト
Apple Computer, Inc.
Apple Inc.
Aureal
Avira
Azureus
BazisSoft
C07ft5Y
Canon
Citrix
...

これは、コンソール アプリケーションが x64 でビルドされたときの私のマシンの出力です。

7-Zip
AGEIA Technologies
Apple Computer, Inc.
Apple Inc.
ATI Technologies
Canon
Classes
Clients
...

ご覧のとおり、出力は、アプリケーションが x86 か x64 かによって大きく異なります。

編集:以前に StackOverflow で同様の質問がありました。

于 2012-11-10T18:55:04.353 に答える