方法 : Visual Basic でレジストリ キーを作成し、値を設定する
更新 : 2007 年 11 月
My.Computer.Registry オブジェクトの CreateSubKey メソッドを使用して、レジストリ キーを作成できます。
手順
レジストリ キーを作成するには
CreateSubKey メソッドを使用して、キーを配置するハイブ、およびキーの名前を指定します。パラメータ Subkey では、大文字と小文字は区別されません。レジストリ キー MyTestKey を HKEY_CURRENT_USER の下に作成する例を次に示します。
My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
レジストリ キーを作成し、値を設定するには
CreateSubkey メソッドを使用して、キーを配置するハイブ、およびキーの名前を指定します。レジストリ キー MyTestKey を HKEY_CURRENT_USER の下に作成する例を次に示します。
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.")
使用例
レジストリ キー MyTestKey を HKEY_CURRENT_USER の下に作成し、文字列値 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 key を開き、会社名を使用してキーを作成するとします。その後で、会社名のキーにレジストリ値を追加します。
Web アプリケーションからレジストリを読み取る場合、現在のユーザーは、Web アプリケーションで実装されている認証と偽装によって異なります。
ローカル コンピュータ (LocalMachine) よりもユーザー フォルダ (CurrentUser) にデータを書き込む方が安全です。
レジストリの値を作成するときは、その値が既存の値である場合の処理を決めておく必要があります。悪意のあるユーザーによって作成された別のプロセスが既に値を作成し、アクセス権を持っている可能性があります。レジストリ値にデータを設定すると、そのデータを他のプロセスから利用できるようになります。これを回避するために、GetValue メソッドを使用します。このメソッドは、キーがまだ存在しない場合、Nothing を返します。
レジストリ キーがアクセス制御リスト (ACL: Access Control List) によって保護されている場合でも、パスワードなどの秘密のデータをプレーンテキストでレジストリに格納するのは危険です。
次の条件を満たす場合は、例外が発生する可能性があります。
キーの名前が Nothing (ArgumentNullException) である場合
レジストリ キーを作成するためのアクセス許可がユーザーにない場合 (SecurityException)
キー名が 255 文字の制限を超えている場合 (ArgumentException)
キーが閉じている場合 (IOException)
レジストリ キーが読み取り専用の場合 (UnauthorizedAccessException)
セキュリティ
このプロセスを実行するには、アセンブリに対して RegistryPermission クラスで権限レベルが許可されている必要があります。完全には信頼できないコンテキストでプロセスを実行している場合は、権限不足のため例外がスローされることがあります。同様に、設定の作成または書き込みを行うために、ユーザーは正しい ACL を持っている必要があります。たとえば、コード アクセス セキュリティ権限のあるローカル アプリケーションに、オペレーティング システム権限があるとは限りません。詳細については、「コード アクセス セキュリティの基礎」を参照してください。