
CCleaner、アンインストール時に無関係なファイルを削除する問題の修正へ 38
ストーリー by headless
修正 部門より
修正 部門より
CCleaner ではインストールディレクトリにアプリとは無関係なファイルが格納されていても、アンインストール時に削除してしまうという問題があり、Avast が修正作業を進めているそうだ
(BetaNews の記事、
CCleaner Community Forums のスレッド)。
多くのアンインストーラーはインストールディレクトリにアプリと無関係なファイルがあれば削除しないが、CCleaner のアンインストーラーは無視してインストールディレクトリごと削除してしまう。そのため、既存ディレクトリをインストール先に指定した場合など、他に何が格納されていてもアンインストール時にはすべて削除されることになる。インストール先をカスタマイズした際に専用のサブディレクトリが作成されない点が問題だとする指摘もみられるが、これは多くのインストーラーで一般的な動作であり、特に問題視することはないと思われる。
一方、最近の報告では「D:\Applications\CCleaner」にインストールした CCleaner をコントロールパネルからアンインストールしたところ、「D:\Applications」の内容がすべて削除されたという。事実とすれば深刻な問題だが、手元の環境で試してみた限りは再現しなかった。CCleaner を「D:\Applications」にインストール・アンインストールすると Applications ディレクトリごと削除されるが、「D:\Applications\CCleaner」へのインストール・アンインストールで削除されるのは CCleaner ディレクトリのみだった。
多くのアンインストーラーはインストールディレクトリにアプリと無関係なファイルがあれば削除しないが、CCleaner のアンインストーラーは無視してインストールディレクトリごと削除してしまう。そのため、既存ディレクトリをインストール先に指定した場合など、他に何が格納されていてもアンインストール時にはすべて削除されることになる。インストール先をカスタマイズした際に専用のサブディレクトリが作成されない点が問題だとする指摘もみられるが、これは多くのインストーラーで一般的な動作であり、特に問題視することはないと思われる。
一方、最近の報告では「D:\Applications\CCleaner」にインストールした CCleaner をコントロールパネルからアンインストールしたところ、「D:\Applications」の内容がすべて削除されたという。事実とすれば深刻な問題だが、手元の環境で試してみた限りは再現しなかった。CCleaner を「D:\Applications」にインストール・アンインストールすると Applications ディレクトリごと削除されるが、「D:\Applications\CCleaner」へのインストール・アンインストールで削除されるのは CCleaner ディレクトリのみだった。
見聞きするフリーソフトの初出が20年以上前… (スコア:0)
CCcleaner、昔から有名だけど、実際使っている人っている?
昔か。20年くらい前にはあったような気がするけど、俺も年取ったなあ。
Re:見聞きするフリーソフトの初出が20年以上前… (スコア:1)
あるレベルより詳しくない人のPCに一定割合で入っているような希ガス。
あ、レベルの高い人は相談に来ないから見たこと無いか...
# 大勢に影響ないけど、「c」が1個多いですよ
Re: (スコア:0)
えっ。CCcleanerじゃなかったんだ。昔から名前はよく見てたけど初めて知ったw
Re: (スコア:0)
大昔だけだね。レジストリクリーナーとして使っていたが、
消して良い物か判断できない事が多い。MSの開発系とか。
ini、confファイルの代わり、ソフト部品、共通ファイルの登録とか必要かもしれんが、
既にその考え自体が時代遅れとじゃないかな。
環境依存せず、exe一本で動くようにならんのかと。今のPCなら肥大化してもいいだろ。
Re: (スコア:0)
> 環境依存せず、exe一本で動くようにならんのかと。
Windows.exeだけになるんですね。
Re: (スコア:0)
消せるよーと言ってくるものを消してもまあ問題が起きない。
しかし消しても動作に変化は良くも悪くもない。
ワンexeファイル形式は却下。ファイルの更新が面倒だし遅くなる。
Re: (スコア:0)
スマホのアプリとか、アプリがサンドボックス化されてる環境だと、データも設定もアプリ独立で持ってるな。
基本的に、別のアプリのデータにはアクセスできない。
Windowsも、ストアからインストールするアプリはそうなってるんじゃないかな。
昔からレジストリを親の仇みたいに嫌う人いるよね。
今のシステムだと、パフォーマンスに問題ないし、レジストリが破壊されるようなこともなくなってるから、そこまで嫌う必要はないと思うんだが。
レジストリはシステム全体で共有されるから、セキュリティ的には良くないんだが、Windowsはファイルシステムのほうもシステム全体で共有だから、今更な気もするが。
Re: (スコア:0)
レジストリは、起動しなくなったWindowsから設定を抜き出すことができないから嫌だな。
Re: (スコア:0)
ふつうにハイブの読み込みでアクセスできるが?
PC版LINE (スコア:0)
のアンインストーラもProgram filesを消してしまうバグがあったのを思い出した
Re:PC版LINE (スコア:3)
ゲームをアップデートするだけでHDDが消される悪夢な案件もありましたね
PC版『PSO2』にてHDD内のデータが一部削除される可能性のある不具合(9/13 21:00更新)
https://pso2.jp/players/news/2150/?page=312 [pso2.jp]
Re: (スコア:0)
これは確か
アップデータが解凍・インストール後に不要になったファイルを削除するのだが、親ディレクトリの指定がずれていて、
ファイル削除の起点になるパスがPSO2のインストールしているフォルダの1個上になってしまい、
Program Filesのほかのフォルダのファイルも削除していってしまう
自分自身は消せないので、Program FilesのAからPまで消したところでエラーで止まる
という現象だったような(Program Files以外に置いていれば違うファイルが消される)
Re: (スコア:0)
みずいろ問題… (スコア:0, 興味深い)
たしかかつてのみずいろアンインストール時に無関係ファイル消しちゃうのも同じ問題だったはず
かつこのタイプはアンインストール予定のディレクトリが存在しないと削除対象ディレクトリが(設定に失敗することで)ルートになってシステム壊しちゃう…だっけ?
Re: (スコア:0)
全然「同じ問題」に見えないんだけど
Re: (スコア:0)
> 「D:\Applications」の内容がすべて削除されたという
親ディレクトリ削除みたいだから、ルートから削除よりは多少被害は小さいくらいか?
システム壊れるという意味では、同じかもしれんが。
みずいろは、ゲームシステム付属の簡易アンインストーラをにバグがあったんだっけ。
あのゲームシステム、当時は広く使われてたが、確か個人が制作したものなんだよな。
怖い怖い
パッケージマネージャくらい作ればいいのに (スコア:0)
この手の問題が起こるたび、Windows標準でパッケージマネージャくらい作ればいいのになぁ、と思う。
Re: (スコア:0)
昨年正式リリースされましたよ
wingetといいます
Re: (スコア:0)
これ、Win32アプリのインストールはインストーラーをサイレントモードで起動しているだけだから、こういう問題が起きるかどうかは結局インストーラーの出来に左右されるよね。
Re: (スコア:0)
何種類か世代交代してるけど有るぞ。
なぜか独自のやつを使うやつが多いだけで。
ストアアプリ以外含めたも統一したシステムを作るべきだったとは思うけど。
新しいシステムを提供するときに古いシステムを切り捨てて
強制的に世代交代させようとして失敗した例の一つではある。
Re: (スコア:0)
binにサブディリクトリなんぞ無しすべてぶっ込めるマネージャ希望
同名ファイルは勝手に尻尾つけて善きに計らうヤツ
ライブラリだけの更新も他アプリケーションへの副作用無く対応したヤツ
ユーザ環境の抽出バックアップにも対応したヤツ
自作スクリプト等も含めOSと協業衝突回避と掃除、移管しやすいアプリケーション環境になんないかなー
Re: (スコア:0)
パッケージマネージャーではないけど、せめてWindows Installer(.msiファイル)使ってほしい。
Windows Installerでは、インストールした個々のファイルパスを記録してアンインストール時には個々のファイルを削除する処理だし、フォルダの削除も中身が空なら削除するという挙動。
素人考えかも知れんが (スコア:0)
レジストリーが肥大化しないように最初から作れないものなのかと思う
Re: (スコア:0)
レジストリーが肥大化しないように最初から作れないものなのかと思う
アプリが「そのアプリに紐づいたレジストリしか書き込みできない」を厳格にやらない限り無理。
やったら後方互換性が壊滅的なことになる。
Re: (スコア:0)
個々のキーに権限設定可能だけど活かせない状態ですからねぇ。
3.1/95系の雑なやつ移行させるにはしょ~がなかった面はあるでしょうけど…
Re: (スコア:0)
MSIXパッケージ化されたアプリではレジストリの仮想化をやってる。アプリから書き込んだレジストリキーの内容は独立したハイブに書き込まれてそのアプリだけにアクセスでき、アンインストールとともに綺麗さっぱりなくなる
Re: (スコア:0)
dir /a %USERPROFILE%\ntuser.dat ってしてみよう。per user な設定って、そんなもんなんだぞ。ってことは…。
Re: (スコア:0)
ずいぶん前からトレンドはレジストリを使わずプロファイルフォルダ配下にアプリごとに設定ファイルを持つ方式だぞ
自分のフォルダだけ消そうよ…… (スコア:0)
なぜ一個上のフォルダまで消してしまうのか
Re: (スコア:0)
なぜ一個上のフォルダまで消してしまうのか
インストール先に作成したディレクトリを消すのにGetDirectoriesで
.
..
conf\
data\
を取り出して、それを削除していくと、".."で上のディレクトリも対象になってしまって。。。とか。
Re: (スコア:0)
インストール先に作成したディレクトリを消すのにGetDirectoriesで
.
..
conf\
data\
を取り出して、それを削除していくと、".."で上のディレクトリも対象になってしまって。。。とか。
フォルダ一覧を取得するAPIで.や..を返しうる実装なんて見たことないんだけど、具体的にどんな処理系の話をしてる?
少なくとも.NET系のGetDirectoriesにはそんな動作はないが。
Re:自分のフォルダだけ消そうよ…… (スコア:2)
FindFirstFile/NextFile ネイティヴで話をしないと。
Re: (スコア:0)
ネイティヴというならNtQueryDirectoryFileだろ
Re:自分のフォルダだけ消そうよ…… (スコア:1)
ちなみにUNIX系でドットで始まるファイルが隠しファイルなのは、"."と".."を除外しようとして除外しすぎたバグが起源らしい
Re: (スコア:0)
コマンドプロンプトでdirコマンドを実行してみろ。
# PowerShellのdirコマンドだと確かに出て来ないな
もしもワイがやらかす奴だとすれば (スコア:0, 参考になる)
多分、こんな経緯で自分もやらかすかもしれない。
インストーラー「どこにインスコするんや?ディレクトリを選んだってや」
ユーザー「D:\Application」
インストーラー「じゃあその中に CCleaner ディレクトリを作ってやな・・・
せや、アンインスコ用にディレクトリを記録しといたろ。
〝インストール場所は D:\Application やで〟と・・この中の CCleaner ディレクトリを消せばええんよな」
アンインストーラー「お、インスコ場所は D:\Application だったんか。じゃあここ全部消せばええんやな!」
アプリの問題じゃなくて (スコア:0)
インストーラスクリプトの組み方の問題で
このアプリ以外でもちょくちょく起きてる
なんかであったのは日本語がパスに入ってると
思いっきり上位フォルダを消してしまう奴
まぁ結局のところ検証不足なんですが。
使い途 (スコア:0)
本来の用途では使わなくなった
常駐しないとか~しないとかの設定はすべて外しておく
自動起動してしまうソフトの削除とか無効化に便利
削除してしまうとまたいつのまにか入ってくるけど
無効化だと入らないのでガードできて便利
# 無効化にする普通のやりかたを知らない
右クリックのとこにメニューいれてくるソフト対策の
お掃除にも使っていたがWindows11で隠してくれるよ
うになって目障りではなくなってきたので頻度は減った