方法 : Visual Basic で、レジストリ キーから値を読み取る
更新 : 2007 年 11 月
My.Computer.Registry オブジェクトの GetValue メソッドを使用すると、Windows レジストリ内の値を読み取ることができます。目的のキー (この場合は "Software\MyApp") が存在しないと、例外がスローされます。ValueName (この場合は "Name") が存在しないと、Nothing が返されます。
レジストリ キーの値を読み取るには
GetValue メソッドをパスと名前を指定して使用し、レジストリ キーから値を読み取ります。次の例では、HKEY_CURRENT_USER\Software\MyApp から値 Name を読み取り、メッセージ ボックスにこの値を表示します。
Dim readValue As String readValue = My.Computer.Registry.GetValue _ ("HKEY_CURRENT_USER\Software\MyApp", "Name", Nothing) MsgBox("The value is " & readValue)
このコードの例は、IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、これは [Windows Operating System] の [Registry] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。
堅牢性の高いプログラム
レジストリには、データを格納するために使用される最上位キー (ルート キー) が保持されています。たとえば、HKEY_LOCAL_MACHINE ルート キーは、すべてのユーザーが使用するマシン レベルの設定を格納するために使用されます。一方、HKEY_CURRENT_USER は、個々のユーザーに固有のデータを格納するために使用されます。
次の条件を満たす場合は、例外が発生する可能性があります。
キーの名前が Nothing である場合 (ArgumentNullException)
ユーザーにレジストリ キーを読み取る権限が与えられていない場合 (SecurityException)
キー名が 255 文字の制限を超えている場合 (ArgumentException)
セキュリティ
このプロセスを実行するには、アセンブリに対して RegistryPermission クラスで特権レベルが許可されている必要があります。完全には信頼できないコンテキストでプロセスを実行している場合は、権限不足のため例外がスローされることがあります。同様に、ユーザーは、設定の作成または書き込みを行うための正しい ACL を持っている必要があります。たとえば、コード アクセス セキュリティ権限のあるローカル アプリケーションに、オペレーティング システム権限があるとは限りません。詳細については、「コード アクセス セキュリティの基礎」を参照してください。