Microsoft.Win32 名前空間を使用したレジストリの読み取りと書き込み

更新 : 2007 年 11 月

My.Computer.Registry を使用すると、レジストリに対するプログラミングの基本的なニーズを満たすことができますが、このオブジェクトの他に、.NET Framework の Microsoft.Win32 名前空間にある Registry クラスおよび RegistryKey クラスも使用できます。

レジストリ クラスのキー

Registry クラスには、サブキーとその値にアクセスするために使用できる、基本レジストリ キーが用意されています。基本キーそのものは読み取り専用です。Registry クラスによって公開されている 7 つのキーについて次の表で説明します。

キー

説明

ClassesRoot

ドキュメントの型と、型に関連するプロパティを定義します。

CurrentConfig

各ユーザーに共通のハードウェア構成情報を格納します。

CurrentUser

環境変数など、現在のユーザー固有の設定に関する情報を格納します。

DynData

仮想デバイス ドライバによって使用されるレジストリ データなど、動的なレジストリ データを格納します。

LocalMachine

ローカル コンピュータの構成データを示す 5 つのサブキー (Hardware、SAM、Security、Software、および System) を格納します。

PerformanceData

ソフトウェア コンポーネントのパフォーマンス情報を格納します。

Users

既定のユーザー設定に関する情報を格納します。

8bf3xkta.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

ローカル コンピュータ (LocalMachine) よりも現在のユーザー (CurrentUser) にデータを書き込む方が安全です。作成するキーが、悪意を持っている可能性がある別のプロセスによって既に作成されていた場合、通称 "スクワッティング (無断占拠)" と呼ばれる状態が発生します。このような事態を防ぐには、キーが存在しない場合に Nothing を返す GetValue などのメソッドを使用します。

レジストリから値を読み取る

HKEY_CURRENT_USER から文字列を読み取る方法を次の例に示します。

Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue As String
keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
    intVersion = regVersion.GetValue("Version", 0)
    regVersion.Close()
End If

HKEY_CURRENT_USER の文字列を読み取り、1 つ増加し、HKEY_CURRENT_USER に書き戻す例を次に示します。

Dim regVersion As Microsoft.Win32.RegistryKey
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _
             "SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
    ' Key doesn't exist; create it.
    regVersion = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( _
                 "SOFTWARE\\Microsoft\\TestApp\\1.0")
End If

Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
    intVersion = regVersion.GetValue("Version", 0)
    intVersion = intVersion + 1
    regVersion.SetValue("Version", intVersion)
    regVersion.Close()
End If

参照

処理手順

トラブルシューティング : レジストリの操作

概念

Visual Basic の構造化例外処理の概要

一般的なレジストリ タスク

セキュリティとレジストリ

My を使用したレジストリからの読み取りとレジストリへの書き込み

参照

SystemException

ApplicationException

My.Computer.Registry オブジェクト