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