デバイスの ソフトウェア キーを直接開く必要はありません。 レジストリ キーと同様に、これらのキーの場所または形式は、Windows の異なるバージョン間で変更される可能性があります。
注
対応するデバイスが見つかった後にのみ、デバイスのソフトウェア キーを開く必要があります。 この手順の詳細については、「 インストールされているデバイスの列挙」を参照してください。
デバイスのソフトウェア キーを開くか作成するには、次のガイドラインに従います。
注
要求されたセキュリティ アクセスを、必要な最小限のアクセス許可に提供するパラメーターを設定する必要があります。 このパラメーターを KEY_ALL_ACCESS に設定しないでください。 レジストリ アクセスのアクセス許可を指定する方法の詳細については、「レジストリ キーへの安全なアクセス」を参照してください。
既存のソフトウェア キーを開くには、CM_Open_DevNode_Keyを使用し、DispositionにRegDisposition_OpenExistingとulFlagsにCM_REGISTRY_SOFTWAREを含めるか、またはSetupDiOpenDevRegKeyとKeyTypeパラメーターにDIREG_DRVを使用します。
ソフトウェア キーを作成するには、CM_REGISTRY_SOFTWAREを含む RegDisposition_OpenAlways と ulFlags の Disposition でCM_Open_DevNode_Keyを使用するか、DIREG_DRVの SetupDiCreateDevRegKey および KeyType パラメーターを使用します。
カーネル モードの呼び出し元は 、IoOpenDeviceRegistryKey を 使用し、 DevInstKeyType パラメーターをPLUGPLAY_REGKEY_DRIVERに設定する必要があります。
デバイスのソフトウェア キーのレジストリ値の変更
デバイスのソフトウェア キーの次のレジストリ エントリ (デバイス プロパティ) の値を変更しないでください。
- DriverDate
- DriverDateData
- DriverDesc
- ドライバーバージョン
- InfPath
- InfSection
- InfSectionExt
- マッチングデバイスID
- プロバイダーネーム
- EnumPropPages32
これらのデバイス プロパティは、デバイスのインストール状態を表します。 これらのプロパティを直接変更すると、デバイスのインストール状態が無効になる可能性があります。 たとえば、 INF ファイル に関連する情報を変更すると、デバイスやドライバーの署名情報などのプロパティに関連付けられているドライバー ファイルに関する情報が無効になります。 ドライバーのバージョンまたはドライバーの日付を変更すると、Windows Update の機能が壊れる可能性があります。
注
Windows Vista 以降、オペレーティング システムでは、これらのプロパティに対して "インストール時のみ" のアクセス制限が適用されます。 互換性のために値をレプリケートすることができ、デバイスのインストール中に値を直接変更しても内部状態には影響しません。