Windowsで「最新のWindows C ++アプリケーションがそのファイルタイプを登録する方法」を調査してきました(C ++:アプリケーションのファイルタイプの関連付けを正しく登録および登録解除する方法を(プログラムで)参照してください)。
この件に関するさまざまな MSDN の記事をくまなく調べた結果、要約は次のようになります。
- インストーラー (昇格) は、グローバル ProgID HKLM\Software\Classes\my-app.my-doc[.version] (例: HKLM\Software\Classes\TextPad.text) を登録する必要があります。
- インストーラーは、ドキュメント タイプ (.myext など) の既定の関連付けも構成し、これを前述の HKLM のグローバル ProgID にポイントします。
注:ここでは、ユーザー インターフェイスを提供して、ユーザーがすべての既定の関連付けを受け入れるか、設定する関連付けをカスタマイズできるようにする必要があります。 - 標準 (昇格されていない) を実行しているアプリケーションは、現在のユーザーが個人的な関連付けをインストーラーで使用できるように設定できるようにするための UI を提供する必要があります。 .
- その後、UN インストーラーは、登録されているすべての ProgID を削除する責任があります (ただし、Windows は不足している ProgID を指す関連付けを処理するのに十分スマートであり、これは MSDN によって指定された望ましい動作であるため、実際のファイルの関連付けはそのままにしておく必要があります)。
#4: アンインストーラーは、特定のユーザー アカウントに対して昇格された状態で実行され、ステップ #3 で作成された他のユーザーのユーザーごとの ProgID をどのように削除するのでしょうか?
私が理解しているように、昇格モードであっても、アンインストーラーは別のユーザーのレジストリハイブに移動してアイテムを削除することはできませんか? それともできますか?各ユーザーハイブを最初にロードする必要がありますか? ここでのルールは何ですか?
あなたが提供しなければならないかもしれない洞察をありがとう!
編集:解決策については以下を参照してください(私の質問は混乱して設立されました)