Windows7のコントロールパネルにある「トラブルシューティング→設定の変更」にて、コンピューターの保守が有効になっている場合、定期的にスクリプトが動作してクリック先ファイルの見つからないショートカットや、一定期間使用していないデスクトップアイコンを自動的に削除します。
Google等で検索すると、対処方法として「コントロールパネルの設定で無効にする」とか、「レジストリのLinkResolvelgnoreLinkInfo、NoResolveTrack、NoResolveSearchを無効に設定する」とか、「TS_BrokenShortcuts.ps1を編集する」といった回答がヒットします。これらは当時緊急に模索された方法です。現在は解決方法としてMicrosoftからKB2642357が提供されいてるので、この情報にしたがって対応するのがよいでしょう。
解決方法は「KB2642357 :Broken shortcuts are deleted from the desktop in Windows 7(日本語訳は機械翻訳の質がすごく悪いので英語を読んだほうがよい)」に記載されています。ここで提供されているHotFixをダウンロードしてインストールしてから、記載内容にしたがってレジストリを編集します。
インストール手順
HotFixのダウンロードURLは公開されていないので、ダウンロードボタンをクリックした後、メールアドレスを入力してCAPTCHAによる認証を行います。その後、登録したメールアドレスにダウンロードURLを記載したメールが送られてくるので、そこからダウンロードします。
ダウンロードしたファイルは自己解凍の圧縮ファイルになっているので、適当なフォルダに解凍します。 解凍したWindows6.1-KB2642357-x86.msuをダブルクリックしてインストールします。
合わせて以下のレジストリ値を作成して設定します。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ScheduledDiagnostics] "IsBrokenShortcutsTSEnabled"=dword:00000000 "IsUnusedDesktopIconsTSEnabled"=dword:00000000
グループポリシーでの展開方法
グループポリシーから行う場合には、Windows6.1-KB2642357-x86.msuをスタートアップスクリプトでインストールします。Windows6.1-KB2642357-x86.msuを共有フォルダに配置しておき、Windows Update Standalone Installer(wusa.exe)を呼び出す次のようなBATファイルを作成します。これをグループポリシーの「コンピューターの構成→ポリシー→Windowsの設定→スクリプト」にてスタートアップスクリプトに登録します。
@ECHO OFF SET LOGFILE=%SystemRoot%\Logs\Windows6.1-KB2642357-x86.log IF EXIST %LOGFILE% GOTO EXIT md %SystemRoot%\Logs echo "Windows6.1-KB2642357-x86.msuを適用しました。" > %LOGFILE% wusa.exe "\\adsv\share\HotFix\Windows6.1-KB2642357-x86.msu" /quiet /warnrestart :EXIT
合わせてレジストリの設定も必要になるので、グループポリシーの「コンピューターの構成→基本設定→Windowsの設定→レジストリ」にてIsBrokenShortcutsTSEnabledとIsUnusedDesktopIconsTSEnabledを作成するように設定します。