VB.NETでレジストリから値を取得する方法について説明する。
レジストリから値を操作するには、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ファイル等)によって管理されていた。
・設定に失敗すると、該当するアプリケーションが起動しなくなってしまう恐れがある。
 →編集する場合には、バックアップを取ってから編集すること。