[ad_1]
Windows レジストリに「スマート」キーがいくつかあるようです。 私が賢いと言っているのは、それらがそこにあることを意味します (RegEdit はそれらを認識します) が、検索を実行しても (OpenSubKey/GetSubKey ルーチンを介して) 見つかりません。
適例:
レジストリには次のキーがあります。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\044A7038A79602FACF77629B3A9FFA16
OpenKey/GetSubkey メソッドを使用すると、キーではない 6 つのサブキーが取得されます
044A7038A79602FACF77629B3A9FFA16
.
インストール中に追加されたキーのファイルを作成してから、それらを削除したいと考えています。 なんで? インストーラーを実行すると問題なくインストールされますが、アプリケーションをアンインストールすることはできません。
削除とクリーンアップを実行するには、まずキーを見つけなければなりません。
私が試したこと:
私は次のことを試しました
TopKey = CurrentKey.OpenSubKey(fullpath, RegistryKeyPermissionCheck.ReadSubTree, Lrights[K]);
CurrentKey の場所
HKEY_LOCAL_MACHINE
64 ビットと 32 ビットの両方で開かれ、
Lrights[K]
のすべての列挙された権利です
System.Security.AccessControl.RegistryRights
管理者権限でデバッガーを実行しています。
最初の HKEY_LOCAL_MACHINE を開くコードは次のとおりです。
RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
また
RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
解決策 1
レジストリには「スマート キー」などの「スマート」なものはありません。
表示されているのは、別の順序に再配置されたコンポーネント GUID データです。 5、6年ほど前に出会いました。 私のメモは見つかりませんが、GUID 内のさまざまなバイト グループが再配置されて、Components キーの下に表示されているキー値を構成しています。
独自の MSI を構成し、それに機能とコンポーネントを追加できます。 コンポーネントに指定した GUID をメモし、テスト マシンにインストールします。 レジストリ内のコンポーネント データを調べると、コンポーネント キー データが見つかり、メモした GUID と比較されます。 2つを比較して、再配置が何であるかを理解できます。
編集:
私 考える こんな感じになりました。 GUID を取得し、その最初の 3 つのセクションを逆にします。 次の 2 つのセクションでは、すべての文字のペアが入れ替わっています。
{3F7E7201-428F-4624-BE2A-AFE115BED227} 1027E7F3 F824 4264 EBA2 FA1E51EB2D72 becomes this in the Components key: 1027E7F3F8244264EBA2FA1E51EB2D72
[ad_2]
コメント