方法: レジストリ キーを作成し、その値を設定する (Visual Basic)
レジストリ キーを作成するには、My.Computer.Registry
オブジェクトの CreateSubKey
メソッドを使用します。
プロシージャ
レジストリ キーを作成するには
CreateSubKey
メソッドを使用し、キーを入れるハイブとキー名を指定します。 パラメーターSubkey
では、大文字と小文字は区別されません。 この例では、HKEY_CURRENT_USER の下にレジストリ キーMyTestKey
を作成します。My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
レジストリ キーを作成し、それに値を設定するには
CreateSubkey
メソッドを使用し、キーを入れるハイブとキー名を指定します。 この例では、HKEY_CURRENT_USER の下にレジストリ キーMyTestKey
を作成します。My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
値は、
SetValue
メソッドを使用して設定します。 この例では、文字列値 "MyTestKeyValue" を "This is a test value" に設定します。My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey", "MyTestKeyValue", "This is a test value.")
例
この例では、HKEY_CURRENT_USER の下にレジストリ キー MyTestKey
を作成し、文字列値 MyTestKeyValue
を This is a test value
に設定します。
My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
' Change MyTestKeyValue to This is a test value.
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey",
"MyTestKeyValue", "This is a test value.")
信頼性の高いプログラミング
レジストリの構造を調べて、キーの適切な場所を見つけることができます。 たとえば、現在のユーザーの HKEY_CURRENT_USER\Software キーを開き、会社名のキーを作成できます。 その後で、会社名のキーにレジストリ値を追加します。
Web アプリケーションからレジストリを読み取る際、現在のユーザーは Web アプリケーションに実装されている認証と偽装によります。
ローカル コンピューター (LocalMachine) よりもユーザー フォルダー (CurrentUser) にデータを書き込む方が安全です。
レジストリの値を作成するときは、その値が既存の値である場合の処理を決めておく必要があります。 悪意のあるユーザーによって作成された別のプロセスが既に値を作成し、アクセス権を持っている可能性があります。 レジストリ値にデータを設定すると、そのデータを他のプロセスから利用できるようになります。 これを回避するには、GetValue メソッドを使います。 このメソッドは、キーがまだ存在しない場合、Nothing
を返します。
レジストリ キーがアクセス制御リスト (ACL: Access Control List) によって保護されていても、パスワードなど他人に知られたくないデータをプレーン テキストでレジストリに格納するのは危険です。
次の条件を満たす場合は、例外が発生する可能性があります。
キーの名前が
Nothing
である場合 (ArgumentNullException)。レジストリ キーを作成するためのアクセス許可がユーザーにない場合 (SecurityException)。
キー名が 255 文字の制限を超えている場合 (ArgumentException)。
キーが閉じている場合 (IOException)。
レジストリ キーが読み取り専用の場合 (UnauthorizedAccessException)。
.NET Framework のセキュリティ
このプロセスを実行するには、アセンブリに対して RegistryPermission クラスで特権レベルが許可されている必要があります。 部分的に信頼されたコンテキストで実行している場合、プロセスは、特権がないために例外をスローする可能性があります。 同様に、ユーザーには、設定に対する作成や書き込みを行うための適切な ACL が必要です。 たとえば、コード アクセス セキュリティのアクセス許可を持つローカル アプリケーションには、オペレーティング システムのアクセス許可がない可能性があります。 詳しくは、「コード アクセス セキュリティの基礎」をご覧ください。
Note
コード アクセス セキュリティ (CAS) は、.NET Framework と .NET のすべてのバージョンで非推奨になりました。 最近のバージョンの .NET では、CAS 関連の API が使われている場合、CAS の注釈は使われず、エラーが発生します。 開発者は、代わりの手段を見つけてセキュリティ タスクを実現する必要があります。
関連項目
.NET