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は個々のユーザーに固有のデータを格納するために使用されます。
次の条件が原因で例外が発生する可能性があります。
キーの名前は
Nothing
(ArgumentNullException)。ユーザーには、レジストリ キー (SecurityException) から読み取るアクセス許可がありません。
キー名が 255 文字の制限 (ArgumentException) を超えています。
.NET Framework のセキュリティ
このプロセスを実行するには、アセンブリには、 RegistryPermission クラスによって付与された特権レベルが必要です。 部分的な信頼コンテキストで実行している場合、権限が不十分なため、プロセスが例外を投げる可能性があります。 同様に、ユーザーは設定を作成または書き込むための正しい ACL を持っている必要があります。 たとえば、コード アクセス セキュリティアクセス許可を持つローカル アプリケーションには、オペレーティング システムのアクセス許可がない可能性があります。 詳細については、「コード アクセス セキュリティの基本」を参照してください。
注
コード アクセス セキュリティ (CAS) は、.NET Framework と .NET のすべてのバージョンで非推奨になりました。 最近のバージョンの .NET では、CAS に関連する API が使用されている場合、CAS 注釈は使用されず、エラーが発生します。 開発者は、セキュリティ タスクを実行するための代替手段を求める必要があります。
こちらも参照ください
.NET