次の方法で共有


方法: 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 オペレーティング システム > レジストリにあります。 詳細については、「 コード スニペット」を参照してください。

レジストリ キーに値が存在するかどうかを確認するには

  • 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 を持っている必要があります。 たとえば、コード アクセス セキュリティアクセス許可を持つローカル アプリケーションには、オペレーティング システムのアクセス許可がない可能性があります。 詳細については、「コード アクセス セキュリティの基本」を参照してください。

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

こちらも参照ください