方法: レジストリ キーを作成し、その値を設定する (Visual Basic)

レジストリ キーを作成するには、My.Computer.Registry オブジェクトの CreateSubKey メソッドを使用します。

プロシージャ

レジストリ キーを作成するには

  • CreateSubKey メソッドを使用し、キーを入れるハイブとキー名を指定します。 パラメーター Subkey では、大文字と小文字は区別されません。 この例では、HKEY_CURRENT_USER の下にレジストリ キー MyTestKey を作成します。

    My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
    

レジストリ キーを作成し、それに値を設定するには

  1. CreateSubkey メソッドを使用し、キーを入れるハイブとキー名を指定します。 この例では、HKEY_CURRENT_USER の下にレジストリ キー MyTestKey を作成します。

    My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
    
  2. 値は、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 を作成し、文字列値 MyTestKeyValueThis 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) によって保護されていても、パスワードなど他人に知られたくないデータをプレーン テキストでレジストリに格納するのは危険です。

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

.NET Framework のセキュリティ

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

Note

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

関連項目