1

Windowsで「最新のWindows C ++アプリケーションがそのファイルタイプを登録する方法」を調査してきました(C ++:アプリケーションのファイルタイプの関連付けを正しく登録および登録解除する方法を(プログラムで)参照してください)。

この件に関するさまざまな MSDN の記事をくまなく調べた結果、要約次のようになります。

  1. インストーラー (昇格) は、グローバル ProgID HKLM\Software\Classes\my-app.my-doc[.version] (例: HKLM\Software\Classes\TextPad.text) を登録する必要があります。
  2. インストーラーは、ドキュメント タイプ (.myext など) の既定の関連付けも構成し、これを前述の HKLM のグローバル ProgID にポイントします。
    注:ここでは、ユーザー インターフェイスを提供して、ユーザーがすべての既定の関連付けを受け入れるか、設定する関連付けをカスタマイズできるようにする必要があります。
  3. 標準 (昇格されていない) を実行しているアプリケーションは、現在のユーザーが個人的な関連付けをインストーラーで使用できるように設定できるようにするための UI を提供する必要があります。 .
  4. その後、UN インストーラーは、登録されているすべての ProgID を削除する責任があります (ただし、Windows は不足している ProgID を指す関連付けを処理するのに十分スマートであり、これは MSDN によって指定された望ましい動作であるため、実際のファイルの関連付けはそのままにしておく必要があります)。

#4: アンインストーラーは、特定のユーザー アカウントに対して昇格された状態で実行され、ステップ #3 で作成された他のユーザーのユーザーごとの ProgID をどのように削除するのでしょうか?

私が理解しているように、昇格モードであっても、アンインストーラーは別のユーザーのレジストリハイブに移動してアイテムを削除することはできませんか? それともできますか?各ユーザーハイブを最初にロードする必要がありますか? ここでのルールは何ですか?

あなたが提供しなければならないかもしれない洞察をありがとう!

編集:解決策については以下を参照してください(私の質問は混乱して設立されました)

4

2 に答える 2

1

私の知る限り、他のユーザー アカウントの設定は通常そのまま残されています。これは、ファイル タイプの関連付けに限定されません。

すべてのユーザー アカウントから設定を削除することはほぼ不可能です。現在接続されていない、またはローカル管理者がアクセスできないドメイン上のローミング プロファイルである可能性があるためです。

于 2010-05-17T15:10:19.387 に答える
1

私はちょうど気づいた:MSが私たちに望んでいることは、ユーザーごとにファイルマッピング自体を上書きさせることです-つまり.foo->何?インストーラーによってのみ作成され、アンインストーラーによって削除される progID を作成しないでください。そのため、「ぶら下がっている ProgID」はありません。MS が明示的に述べている不足している ProgID にマップされる「ぶら下がっているファイル マッピング」のみです。

インストール前: HKCR\.txt -> HKCR\txtfile (グローバル)

インストール後: HKCR\.txt -> HKCR\MyEditor.text.1 (グローバル)

ユーザーは、代わりに .txt ファイルを TextPad にマップすることを決定します: HKCU\Software\Classes\.txt -> HKCR\TextPad.txt (このユーザーのみ、グローバルにはまだ .txt->MyEditor.text.1)

アンインストール後: HKCR\.txt x-> HKCR\MyEditor.text.1 (グローバルですが、キー HKCR\MyEditor.txt.1 は削除されています)

.txt ポイントの個々のコピーが有効であるかどうかに関係なく、Microsoft がそれを処理するため、値を上書きした 1 人のユーザーは問題ありません。

それが他の人に役立つことを願っています...

于 2010-05-19T14:27:29.607 に答える