方法 : 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 は、個々のユーザーに固有のデータを格納するために使用されます。

次の条件を満たす場合は、例外が発生する可能性があります。

.NET Framework のセキュリティ

このプロセスを実行するには、アセンブリに対して RegistryPermission クラスで特権レベルが許可されている必要があります。 部分的に信頼されたコンテキストで実行している場合、プロセスは、特権がないために例外をスローする可能性があります。 同様に、ユーザーには、設定に対する作成や書き込みを行うための適切な ACL が必要です。 たとえば、コード アクセス セキュリティのアクセス許可を持つローカル アプリケーションには、オペレーティング システムのアクセス許可がない可能性があります。 詳しくは、「コード アクセス セキュリティの基礎」をご覧ください。

Note

コード アクセス セキュリティ (CAS) は、.NET Framework と .NET のすべてのバージョンで非推奨になりました。 最近のバージョンの .NET では、CAS 関連の API が使われている場合、CAS の注釈は使われず、エラーが発生します。 開発者は、代わりの手段を見つけてセキュリティ タスクを実現する必要があります。

関連項目