1

最初の実行時にアクティベーション情報を収集し、これをレジストリに保存する BHO があります。

(私は思う)IEの許可により、これをレジストリブランチにしか保存できません

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\InternetRegistry\REGISTRY\USER\S-0-0-00-000000000-000000000-000000000-0000\Software\MyBHO\MyKey

S-0-0-00-000000000-000000000-000000000-0000 は、各ユーザーの一意のキーです。

と一緒に使用RegCreateKey()しても問題ありません"Software\MyBHO\MyKey"。それはすべて作成され、素敵に実行されています。問題なくキーを格納する空間の場所を決定します。

問題:

アンインストールを実行するときにこのキーを削除したいのですが、これは IE の外部で実行されるため、そのキーがどこにあるのか、ユーザー文字列が何なのかを判断する方法がありません。

私が考えているオプション:

オプション 1 (理想) 最初にこのユーザー文字列を見つけてから、削除したいキーの新しいパスを作成して削除します。どのように?

オプション 2 アクティベーションの時点で、アクセス可能な別のレジストリ値にキーへのパスを保存します。次に、両方を読み取り、削除します(レジストリのBHOのアクセス制限により、おそらく機能しないと思われます(したがって、最初にそこに書き込まれます))

このユーザーキーを見つける方法、または親ディレクトリを見つける方法さえあるかどうか知っていますか。

編集継続的な調査の結果、「ユーザーキー」と呼んでいるものは現在のユーザーの「SID」であることがわかりました。多分これは私により良い結果をもたらすでしょう。

4

2 に答える 2

1

GetUserNameユーザー名LookupAccountNameを取得し、彼の SID を取得するために呼び出します。

ConvertSidToStringSidS-1-5-32-00000000-00000000-00000000-00000000-0000SID を文字列としてフォーマットするための便利なユーティリティ関数です。

于 2012-07-12T18:31:00.673 に答える
0

ユーザーごとのデータをレジストリに書き込みたい場合は、IEGetWriteableHKCU()を使用します。

一般に、アンインストール時にユーザーごとのデータを削除する良い方法はありません。たとえば、ユーザー A としてインストールし、ユーザー B としてアンインストールするとどうなるでしょうか。それらをすべて見つけて削除しますか?糞を置き去りにするだけです。

または、別のデータ ストアの使用を検討することもできます。レジストリは本当に必要ですか?このデータをファイルに保存できますか? ウェブストレージはどうですか?

于 2012-07-12T23:25:06.203 に答える