VB.NETでレジストリから値を取得する方法について説明する。
レジストリから値を操作するには、Microsoft.Win32.Registryクラスを利用する。
以下、サンプル。
レジストリから値を操作するには、Microsoft.Win32.Registryクラスを利用する。
以下、サンプル。
Public Class RegSample
Public Shared Sub Main()
Dim KeyName As String = _
"SOFTWARE\Microsoft\Windows\CurrentVersion"
Dim Name As String = "ProgramFilesDir"
Try
Dim wkReg As Microsoft.Win32.RegistryKey
'HKEY_LOCAL_MACHINE配下のキーを操作する
wkReg = _
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(KeyName)
Console.WriteLine("{0}={1}", Name, wkReg.GetValue(Name))
wkReg.Close()
Catch ex As NullReferenceException
Console.WriteLine("エラー:{0}", ex.Message)
Catch ex As Exception
Console.WriteLine("エラー:{0}", ex.Message)
End Try
End Sub
End Class
【補足事項】
・レジストリの読み込み権限がないとエラーが発生する。
→実行権限を持つユーザで実行する必要がある。
・ルートキーは、サブキー取得時に決まっている必要がある。
・指定できるルートキーと指定方法は、以下の通り。
1.HKEY_CLASSES_ROOT
→ wkReg = Microsoft.Win32.Registry.ClassesRoot
2.HKEY_CURRENT_USER
→ wkReg = Microsoft.Win32.Registry.Users
3.HKEY_LOCAL_MACHINE
→ wkReg = Microsoft.Win32.Registry.LocalMachine
4.HKEY_USERS
→ wkReg = Microsoft.Win32.Registry.CurrentUser
5.HKEY_CURRENT_CONFIG
→ wkReg = Microsoft.Win32.Registry.CurrentConfig
6.HKEY_DYN_DATA
→ wkReg = Microsoft.Win32.Registry.DynData
7.HKEY_PERFORMANCE_DATA
→ wkReg = Microsoft.Win32.Registry.PerformanceData
※以下の処理のOpenSubKey()メソッドを利用するクラスを変更すれば良い。
(キー名が存在していない場合、NullReferenceExceptionが発生する)
wkReg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(KeyName)
【レジストリとは】
・Windowsでアプリケーションの構成や設定情報等を管理するための仕組みである。
・レジストリは、階層構造(フォルダとファイルのような関係)になっている。
・市販されているアプリケーションは、このレジストリに管理情報を保存していることが多い。
・情報の保存場所は、アプリケーション毎に異なる。
→Microsoftによって、保存情報の種類によりどのルートキーに保存するかは決められている。
(但し、全てのアプリケーションがそれに準拠しているとは限らない)
・Windows95以降は、レジストリによって、各種情報を管理するようになっている。
→それ以前は、設定ファイル(.iniファイル等)によって管理されていた。
・設定に失敗すると、該当するアプリケーションが起動しなくなってしまう恐れがある。
→編集する場合には、バックアップを取ってから編集すること。
Public Shared Sub Main()
Dim KeyName As String = _
"SOFTWARE\Microsoft\Windows\CurrentVersion"
Dim Name As String = "ProgramFilesDir"
Try
Dim wkReg As Microsoft.Win32.RegistryKey
'HKEY_LOCAL_MACHINE配下のキーを操作する
wkReg = _
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(KeyName)
Console.WriteLine("{0}={1}", Name, wkReg.GetValue(Name))
wkReg.Close()
Catch ex As NullReferenceException
Console.WriteLine("エラー:{0}", ex.Message)
Catch ex As Exception
Console.WriteLine("エラー:{0}", ex.Message)
End Try
End Sub
End Class
【補足事項】
・レジストリの読み込み権限がないとエラーが発生する。
→実行権限を持つユーザで実行する必要がある。
・ルートキーは、サブキー取得時に決まっている必要がある。
・指定できるルートキーと指定方法は、以下の通り。
1.HKEY_CLASSES_ROOT
→ wkReg = Microsoft.Win32.Registry.ClassesRoot
2.HKEY_CURRENT_USER
→ wkReg = Microsoft.Win32.Registry.Users
3.HKEY_LOCAL_MACHINE
→ wkReg = Microsoft.Win32.Registry.LocalMachine
4.HKEY_USERS
→ wkReg = Microsoft.Win32.Registry.CurrentUser
5.HKEY_CURRENT_CONFIG
→ wkReg = Microsoft.Win32.Registry.CurrentConfig
6.HKEY_DYN_DATA
→ wkReg = Microsoft.Win32.Registry.DynData
7.HKEY_PERFORMANCE_DATA
→ wkReg = Microsoft.Win32.Registry.PerformanceData
※以下の処理のOpenSubKey()メソッドを利用するクラスを変更すれば良い。
(キー名が存在していない場合、NullReferenceExceptionが発生する)
wkReg = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(KeyName)
【レジストリとは】
・Windowsでアプリケーションの構成や設定情報等を管理するための仕組みである。
・レジストリは、階層構造(フォルダとファイルのような関係)になっている。
・市販されているアプリケーションは、このレジストリに管理情報を保存していることが多い。
・情報の保存場所は、アプリケーション毎に異なる。
→Microsoftによって、保存情報の種類によりどのルートキーに保存するかは決められている。
(但し、全てのアプリケーションがそれに準拠しているとは限らない)
・Windows95以降は、レジストリによって、各種情報を管理するようになっている。
→それ以前は、設定ファイル(.iniファイル等)によって管理されていた。
・設定に失敗すると、該当するアプリケーションが起動しなくなってしまう恐れがある。
→編集する場合には、バックアップを取ってから編集すること。
- カテゴリ:
- VB.NET