次の理由により、CM_Delete_DevNode_Key または SetupDiDeleteDevRegKey を使用して、デバイスのソフトウェアキーまたはハードウェアキーを削除しないでください。
CM_Delete_DevNode_Key と SetupDiDeleteDevRegKey は、レジストリキーのすべてのカスタム設定を削除します。 次に例を示します。
インストール中に指定された設定。
デバイスドライバーによって作成または変更された設定。
アプリケーションまたはその他のコンポーネントによって作成または変更された設定。
CM_Delete_DevNode_Key と SetupDiDeleteDevRegKey によって、重要なデバイスのインストール状態も削除されます。
CM_Open_DevNode_Key または SetupDiOpenDevRegKey を使用して開かれたソフトウェアまたはハードウェアキー DICS_FLAG_GLOBAL、デバイスのインストール状態に関するデータが含まれます。 DICS_FLAG_CONFIGSPECIFIC のスコープでアクセスされるソフトウェア、またはハードウェアキーには、デバイスのインストール状態が含まれていません。
いずれの場合も、これらのソフトウェアキーまたはハードウェアキーを削除すると、他のデバイスインストールコンポーネントに影響する可能性があります。
デバイスのレジストリキーが存在するかどうかについて想定しないでください。 デバイスがアンインストールされると、システムはデバイスのすべてのソフトウェア キーとハードウェア キーを自動的に削除します。
標準のレジストリ関数を使用して、ハードウェアキーまたはソフトウェアキーの下にレジストリサブキーを安全に作成および削除できます。 これらの関数を使用すると、システムと他のコンポーネント間の名前の競合を回避できます。 また、これらの関数を使用してサブキーを作成した場合、サブキーは親レジストリ キーの既定のアクセス許可を継承します。 詳細については、キーを開く、作成する、閉じるを参照してください。
標準レジストリ関数の詳細については、レジストリ関数を参照してください。