Microsoft.Win32 名前空間を使用したレジストリの読み取りと書き込み (Visual Basic)
レジストリに対してプログラミングする際の基本的なニーズには My.Computer.Registry
で対応できますが、.NET の Microsoft.Win32 名前空間の Registry クラスと RegistryKey クラスを使用することもできます。
Registry クラスのキー
Registry クラスでは、サブキーとその値にアクセスするために使用できるベース レジストリ キーが提供されます。 ベース キー自体は読み取り専用です。 次の表では、Registry クラスによって公開される 7 つのキーについて説明します。
[キー] | 説明 |
---|---|
ClassesRoot | ドキュメントの種類と、それらの種類に関連付けられているプロパティを定義します。 |
CurrentConfig | ユーザー固有ではないハードウェア構成情報が含まれます。 |
CurrentUser | 環境変数など、現在のユーザー設定に関する情報が含まれます。 |
DynData | 仮想デバイス ドライバーによって使用されるデータなど、動的なレジストリ データが含まれます。 |
LocalMachine | ローカル コンピューターの構成データを保持する 5 つのサブキー (Hardware、SAM、Security、Software、System) が含まれます。 |
PerformanceData | ソフトウェア コンポーネントのパフォーマンス情報が含まれます。 |
Users | 既定のユーザー設定についての情報が含まれます。 |
重要
ローカル コンピューター (LocalMachine) よりも、現在のユーザー (CurrentUser) にデータを書き込む方が安全です。 作成しようとするキーが、以前に悪意のある可能性のある別のプロセスによって作成されたことがある場合、一般に "スクワッティング" と呼ばれる状況が発生します。 スクワッティングの発生を防ぐには、キーがまだ存在しない場合は Nothing
を返す GetValue などのメソッドを使用します。
レジストリから値を読み取る
次のコードでは、HKEY_CURRENT_USER から文字列を読み取る方法を示します。
Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
intVersion = regVersion.GetValue("Version", 0)
regVersion.Close()
End If
次のコードは、HKEY_CURRENT_USER から文字列を読み取り、値を増分した後、書き込みます。
Dim 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 regVersion IsNot Nothing Then
intVersion = regVersion.GetValue("Version", 0)
intVersion = intVersion + 1
regVersion.SetValue("Version", intVersion)
regVersion.Close()
End If
参照
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET