通常のソフトウェアのアンインストールでレジストリからすべての関連値を削除できないのはなぜですか?
あなたがプログラムをアンインストールするとき、それのすべての痕跡があなたのシステムから削除されることは「合理的な」期待です、しかしそれはしばしばそうではありません。何故ですか?本日のSuperUser Q&A投稿には、興味をそそられる読者の質問に対する答えがあります。.
本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.
ワンダーシックの礼儀のスクリーンショット(Flickr).
質問
SuperUserの読者であるMark Boulderは、通常のソフトウェアのアンインストール後にいくつかのレジストリ値が常に残ることを知りたいのです。
SuperUserのトピックに関する詳細アンインストールされたソフトウェアの残りの痕跡をレジストリから削除するにはどうすればよいですか?プログラムをアンインストールしてから後でRegEditで検索するたびに存在するのはなぜなのか?
Windowsアプリケーションの大多数が、レジストリに自分自身の小さな痕跡を残そうとしているのはなぜでしょうか。障害は、Windowsまたは開発者にありますか。?
ソフトウェアを通常アンインストールした後、レジストリ値が通常「置き去り」にされるのはなぜですか?
答え
SuperUserの貢献者であるLukas RiegerとKeltariが私たちに答えてくれます。まず、Lukas Riegerさん。
不可能だから。このレジストリには複数のルートノードがありますが、興味深いものはLocalMachineとCurrentUserの2つだけです。通常、セットアップはLocalMachineに値を書き込み、実行中のプログラムはCurrentUserにのみ書き込みます(実際には、セットアップがアクセス許可に合わない限り、実行中のプログラムはLocalMachineに書き込むことはできません)。.
LocalMachineで残り物を保持するのは怠惰ですが(他の答えで指摘されているように)、CurrentUser部分をきれいにすることは不可能です。.
プログラムがマシンごとにインストールされている場合(ほとんどの場合)、複数のユーザーがそれを使用する場合、アンインストーラーは何をすべきですか?現在のアカウントのユーザー設定を安全に削除できますが、現在のアカウントがあなたのアカウントではない可能性があります。これは、管理者以外のアカウントからアンインストーラを起動して管理者アカウントの資格情報を入力した場合に発生します。セットアップは最初のアカウントではなく、そのアカウントで実行されます。.
他のユーザーはどうですか?すべてのユーザーを列挙しようとする可能性がありますが、それらのレジストリキーは読み込まれない可能性があります(Windowsは遅延し、必要なものだけを読み込みます)。.
しかし、あなたもそれを試すべきではありません。ローミングプロファイル(つまりターミナルサービス)を使用してからアンインストール時にすべての設定を削除すると、実際にはまだ使用されているものが本当に混乱して削除される可能性があります。ターミナルサーバーは基本的に1台のWindowsマシンで、複数のユーザーが同時にログインしてアプリケーションを使用します。 1つのアプリケーションを実行している2つのターミナルサーバーがあるとします。 TS1からアプリケーションをアンインストールすると、ローミングプロファイルがあるため、すべてのユーザーのすべての設定がTS2に反映されます。おっとっと.
ユーザーごとのディレクトリ内のファイルにも同じことが当てはまります。私の会社のプログラムのセットアップでは、マシンごとのものを削除しますが、現在セットアップを実行しているユーザーでさえも、ユーザーごとのものには触れません。.
ケタリからの回答が続きます:
これが本当である理由はたくさんありますが、MicrosoftやWindowsオペレーティングシステムのせいではありません。.
以下は、レジストリエントリが残る理由とその理由の一覧です。
悪いプログラミング - 開発者がアプリケーションのアンインストーラを正しく記述しなかったため、レジストリエントリが残っています。それに加えて、アンインストーラは、レジストリエントリを削除するための適切なアクセス許可を持っていないか、または使用していない可能性があります。これらのキーを使用するアプリケーションが複数あることも考えられます。例えば、同じキーに書き込む同じ開発者からの2つのアプリケーション.
わざと残した - 1つのコメントが述べたように、これらのエントリーは意図的に残されたかもしれません。一部のアプリケーションには試用期間があり、それ以降はアプリケーションを削除することを選択できます。後でアプリケーションを再インストールすることを選択した場合、これらのキーはアプリケーションがインストールされた日時に関する情報を提供します。それに加えて、一部の開発者はあなたがアプリケーションを再インストールすることを選択した場合に備えてこれらのキーを残すことを選択するかもしれません。開発者がレジストリキーを使用してカスタマイズ内容を保存した場合は、アプリケーションを再インストールしてもすべてのカスタマイズ内容が保持されるように、それらのレジストリキーがそのまま使用されます。物事の壮大なスキームでは、レジストリキーは数バイトしかかかりません.
鍵を削除する必要がありますか?場合によります。 Windowsレジストリは、中身を危険にさらす場所です。誤ってシステムを停止させる可能性があります。無関係なキーを残してもシステムに悪影響はありません。何人かの人々はあなたのシステムをスピードアップすることをあなたのシステムをスピードアップ/デフラグすると言うでしょう、しかしそれは繰り返し誤って証明されました.
あなたが本当にこれらのプログラムを取り除きたい場合は、プログラムのすべての痕跡を削除することができますいくつかのアンインストーラツールがあります。これらのプログラムは他のプログラムのインストーラーを監視し、ファイルシステムとレジストリに対して行われたすべてのアクションを記録し、その後それらのアクションを完全に削除します。これらのツールに関する1つの問題は、それらがあなたが保持したいかもしれないものを取り除くことができるということです.
説明に追加するものがありますか?コメントで音を消す。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.