Classic Shell DataCache.dbへの書き込みを止める。
最終更新日
Classic Shellによりディスクアクセスが増える現象
1時間に数回ディスクアクセスが増えるため調べたところ、原因の一つがClassic Shellがキャッシュの書き込みでした。
Classic Shellとは
スタートメニューの表示をXP風やWindows7風などに変更可能にし、細かくカスタマイズできるソフト。
デフォルトでスタートボタンが存在しないWindows8に、スタートボタンを追加。さらに、PC起動時にタイル状のスタート画面を飛ばしてデスクトップ画面を表示してくれる。
キャッシュの保存場所 (Windows7、8の場合)
C:\Users\%username%\AppData\Local\ClassicShell\Datacache.db
または、C:\Users\%username%\AppData\Roaming\ClassicShell\Datacache.db
両方にある場合は、どちらかが古いバージョンの時のものです。古い方は削除しても構いません。
私の環境ではファイルサイズが2.8M程度。20分前後の間隔で更新されており、たまにサイズがわずかに増えます。削除しても、しばらくすると自動的に再作成されます。
現在 Windows 8 32bitで、Classic Shell 4.1.0を使用中。
(2015/06/09時点では、Classic Shell 4.2.1を使用中)
インストール時にClassic Start Menuのみを選択。Classic Explorer、Classic IE、Classic Shell Updateはインストールしていません。
アイコンとデータのキャッシュが繰り返し書き込まれる。
Classic Shell 4.0のリリース時に、キャッシュについて次のように書かれています。
(http://www.classicshell.net/forum/viewtopic.php?t=1343&p=6978 より抜粋)
The icons and data are saved to a cache on disk at %APPDATA%\ClassicShell, so the menu should stay responsive all the time. If you don't want repeated writes to the disk such as in case of an SSD, set the Read-only attribute for the %appdata%\ClassicShell\Datacache.db
翻訳 (適当)
アイコンとデータのキャッシュが %APPDATA%\ClassicShell フォルダーに保存される。これはメニューが常にすばやく応答するためのものであるが、ディスクに繰り返し書き込んでほしくないこともある。例えばSSDの時など。そんな場合は、%appdata%\ClassicShell\Datacache.dbを読み取り専用にすること。
SSDの場合は特に、書き込みを止めた方がよさそうです。(SSDの寿命の問題で)
私のPCはHDDですけれど、やはり止めています。オンラインゲーム中等の高負荷時でも構わず書き込みが発生するためです。
Datacache.dbへの書き込みを止める。(手作業)
Classic ShellのDatacacheを読み取り専用にします。一応、古いキャッシュを残さず中身は空に。
(Datacache.dbをただ削除しても、しばらくしたら復活し書き込みが行われるので、解決にはなりません)
あらかじめ、フォルダーオプションの「登録されている拡張子は表示しない」のチェックを外しておきます。
- %userprofile%\AppData\Local\ClassicShellフォルダーを開く。
なければ、%userprofile%\AppData\Roaming\ClassicShellフォルダーを開く。 - フォルダー内のDatacache.dbを削除。
-
同じフォルダー内で右クリック→新規作成で空のテキストドキュメントを2つ作る。
ファイル名は、Datacache.dbとDatacache.tmp。
2つとも、右クリック→プロパティ→全般タブの読み取り専用にチェックを入れる。
別のユーザーアカウントがあれば、そちらでも同様に行います。
ここでちょっと解説。
Datacache.dbを読み取り専用にしてからしばらく経つと、代わりにDatacache.tmpファイルが作成されます。(容量は同じ) 今度はDatacache.tmpに書き込まれることになります。
そのため、2つとも読み取り専用にする必要があります。
ところで、Classic Shell 4.0.4での変更点として、次のように書かれていました。
(http://www.classicshell.net/forum/viewtopic.php?f=4&t=2025)
The cache is correctly discarded and rebuilt if the Windows language is changed
(またまた適当な翻訳)
Windowsの言語が変更されるときは、きちんとキャッシュを廃棄、再構築する。
このキャッシュがDatacache.dbのことを指すのかわかりません。
しかし、Datacache.dbが作り変えられるようなことがあるとしたら、また読み取り専用にチェックを入れる必要がありそうです。
Datacache.dbへの書き込みを止める。(コマンドで)
バッチファイルを作成して実行します。(Windows7 64bitとWindows 8 32bitで動作確認済)
※ 変更されるのは、現在ログオンしているユーザーのものだけです。他のユーザーの分は変更されません。
Datacache.dbへの書き込みを止めるバッチファイル
- 下のグレー部分の@echo offからexitまでをコピーし、メモ帳に貼り付ける。
- 名前を付けて保存。拡張子は.batにする。
例 Stop_ClassicShell_Datacache.bat - .batファイルをダブルクリックして実行する。
@echo off
set TARGET1=%userprofile%\AppData\Local\ClassicShell
set TARGET2=%userprofile%\AppData\Roaming\ClassicShell
if exist "%TARGET1%\" (
del /f /q %TARGET1%
pushd %TARGET1%
goto NEXT
) else if exist "%TARGET2%\" (
del /f /q %TARGET2%
pushd %TARGET2%
goto NEXT
) else (
goto END
)
:NEXT
type nul > DataCache.db
type nul > DataCache.tmp
attrib +r DataCache.db
attrib +r DataCache.tmp
:END
exit
上記のバッチファイルの内容
ClassicShellフォルダーがどこにあるかを探し、フォルダー中のファイルを削除、改めてDataCache.dbとDataCache.tmpファイルを作成、読み取り専用にします。
探す順序は、まず%userprofile%\AppData\Local内、なければ%userprofile%\AppData\Roaming内、どちらにもなければ何もしません。
元の設定に戻す。(DataCacheへの書き込みを許可する)
手動で戻す場合
%userprofile%\AppData\Local\ClassicShellフォルダー、または、%userprofile%\AppData\Roaming\ClassicShellフォルダー内のDatacache.dbとDatacache.tmpを削除します。その後、何もしなくてもDatacache.dbが再作成されます。
バッチファイルで戻す場合
- 下のグレー部分の@echo offからexitまでをコピーし、メモ帳に貼り付ける。
- 名前を付けて保存。拡張子は.batにする。
例 Default_ClassicShell_Datacache.bat - .batファイルをダブルクリックして実行する。
@echo off
set TARGET1=%userprofile%\AppData\Local\ClassicShell
set TARGET2=%userprofile%\AppData\Roaming\ClassicShell
if exist "%TARGET1%\" (
del /f /q %TARGET1%
goto END
) else if exist "%TARGET2%\" (
del /f /q %TARGET2%
goto END
)
:END
exit
上記のバッチファイルの内容
DataCache.dbとDataCache.tmpを、それらが入ったClassicShellフォルダーごと削除します。
処理する順序は、まず%userprofile%\AppData\Local内、なければ%userprofile%\AppData\Roaming内、どちらにもなければ何もしません。
バッチファイル実行後、ClassicShellをバックグラウンドで稼働させていれば、遅くとも数十分後には、ClassicShell\DataCache.dbが自動的に再作成されます。