.NET TIPS

レジストリの値を列挙するには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2007/09/13

 「TIPS:レジストリのキーを列挙するには?」では、Windowsレジストリ(以降、レジストリ)でレジストリ・キー(以降、キー)を列挙する方法を紹介した。今回はこれに引き続き、キーの中に格納されているレジストリ値を列挙する方法を紹介する。

レジストリ値の名前を列挙する方法

 レジストリ値を列挙する場合、レジストリ値の「名前」と「データ」の両方を取得することが考えられる。しかし、レジストリ値の名前さえ分かれば、レジストリ値のデータは「TIPS:レジストリの値を取得するには?」と同じ方法で取得できる(レジストリ値のデータを取得する際にはデータ型に注意しなければならない。参考:「TIPS:レジストリの値のデータ型を判別するには?」「TIPS:レジストリの値のデータ型を明示的に識別・設定するには?」)。従って本稿では、レジストリ値の名前を列挙する方法のみを説明する。

 レジストリ値の名前を列挙するには、RegistryKeyクラス(Microsoft.Win32名前空間)が持つGetValueNamesメソッド(パラメータなし)を利用すればよい。ただし、このメソッドを呼び出すには、RegistryKeyクラスのオブジェクトが必要である。

 RegistryKeyオブジェクトを取得するには、まず、Registryクラス(Microsoft.Win32名前空間)の静的フィールドであるLocalMachineフィールドやCurrentUserフィールドを利用して適切な基本RegistryKeyオブジェクトを作成する。

 次に、この基本RegistryKeyオブジェクトが持つOpenSubKeyメソッドを、開きたいレジストリのキーのパス名をパラメータに指定して呼び出す(この際のパス名は「HKEY_LOCAL_MACHINE」などのルート名を省略して「SOFTWARE\Microsoft\.NETFramework」のようにする必要がある)。これにより、開きたいキーに対応したRegistryKeyオブジェクトが取得できる。

 あとは、いま取得したRegistryKeyオブジェクトが持つGetValueNamesメソッドを呼び出すと、そのキーに含まれるすべてのレジストリ値の名前が、文字列配列型の戻り値として取得できるというわけだ。

 以上の処理を実装したコード例を次に示す。

using System;
using Microsoft.Win32;

class Program {
  static void Main(string[] args) {
    string baseKeyName =
      @"SOFTWARE\Microsoft\.NETFramework";

    // すべてのレジストリ値の名前を取得する
    RegistryKey rKey =
      Registry.LocalMachine.OpenSubKey(baseKeyName);

    string[] aryValueNames = rKey.GetValueNames();

    rKey.Close();

    foreach (string valueName in aryValueNames) {
      Console.WriteLine(valueName);
      // 出力例:
      // InstallRoot
      // sdkInstallRoot
      // ……以下略
    }
  }
}
Imports Microsoft.Win32

Module Module1

  Sub Main()
    Dim baseKeyName As String = _
      "SOFTWARE\Microsoft\.NETFramework"

    ' すべてのレジストリ値の名前を取得する
    Dim rKey As RegistryKey = _
      Registry.LocalMachine.OpenSubKey(baseKeyName)

    Dim aryValueNames As String() = rKey.GetValueNames()

    rKey.Close()

    For Each valueName As String In aryValueNames
      Console.WriteLine(valueName)
      ' 出力例:
      ' InstallRoot
      ' sdkInstallRoot
      ' ……以下略
    Next

  End Sub

End Module
レジストリ値の名前を列挙するコンソール・アプリケーションのサンプル・プログラム(上:C#、下:VB)

 開いたキーを閉じるため、RegistryKeyオブジェクトのCloseメソッドを呼び出すことを忘れないようにしてほしい。End of Article

カテゴリ:クラス・ライブラリ 処理対象:レジストリ
使用ライブラリ:Registryクラス(Microsoft.Win32名前空間)
使用ライブラリ:RegistryKeyクラス(Microsoft.Win32名前空間)
関連TIPS:レジストリの値を取得するには?
関連TIPS:レジストリの値を設定するには?
関連TIPS:レジストリのキーを列挙するには?
関連TIPS:レジストリの値のデータ型を判別するには?
関連TIPS:レジストリの値のデータ型を明示的に識別・設定するには?

この記事と関連性の高い別の.NET TIPS
レジストリのキーを列挙するには?
レジストリの値を取得するには?
リモート・コンピュータのレジストリを参照/操作するには?
レジストリの値のデータ型を判別するには?
レジストリの値を設定するには?
レジストリの値のデータ型を明示的に識別・設定するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間