方法 : Visual Basic で、レジストリ キーから値を読み取る
My.Computer.Registry
オブジェクトの GetValue
メソッドは、Windows レジストリ内の値を読み込むために使用できます。
キー (次の例では "Software\MyApp") が存在しない場合は、例外がスローされます。 ValueName
(次の例では "Name") が存在しない場合は、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 オペレーティング システム] > [レジストリ] にあります。 詳細については、「Code Snippets」を参照してください。
レジストリ キー内値が存在するかどうかを確認するには
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)。
.NET Framework のセキュリティ
このプロセスを実行するには、アセンブリに対して RegistryPermission クラスで特権レベルが許可されている必要があります。 部分的に信頼されたコンテキストで実行している場合、プロセスは、特権がないために例外をスローする可能性があります。 同様に、ユーザーには、設定に対する作成や書き込みを行うための適切な ACL が必要です。 たとえば、コード アクセス セキュリティのアクセス許可を持つローカル アプリケーションには、オペレーティング システムのアクセス許可がない可能性があります。 詳しくは、「コード アクセス セキュリティの基礎」をご覧ください。
Note
コード アクセス セキュリティ (CAS) は、.NET Framework と .NET のすべてのバージョンで非推奨になりました。 最近のバージョンの .NET では、CAS 関連の API が使われている場合、CAS の注釈は使われず、エラーが発生します。 開発者は、代わりの手段を見つけてセキュリティ タスクを実現する必要があります。
関連項目
.NET