すべてのユーザーの一時 Windows ファイル (システム、ブラウザ、キャッシュなど) を一括削除します。

すべてのユーザーの一時 Windows ファイル (システム、ブラウザ、キャッシュなど) を一括削除します。

このコミュニティで、すべてのユーザーの一時データ (Windows の一時フォルダー、ブラウザーのキャッシュなど) を一括削除するために特定のテクニックを使用している人はいますか?

難しい部分は次のようです:

  • 各製品のフォルダ構造の変更に合わせて、時間の経過とともに更新されるテクニック/ツールを使用します。
  • 他のユーザーのフォルダへのアクセスを許可する(管理者として実行/最大権限)

スクリプト/バッチ ファイルは解決策になる可能性がありますが、古いファイル/フォルダー構造が削除されないように、製品の更新ごとに継続的な監視が必要になります...

あなたの考え?

答え1

私も同じ疑問を抱いていましたが、マルウェアのクリーンアップ操作を完了させる取り組みを支援したいという思いからでした。これは、将来の OS や一時ファイルの場所に合わせて簡単に拡張できるようにモジュール化を念頭に置いて作成したコマンド スクリプトです (これは PowerShell を学習する前に作成したもので、更新していません)。 このスクリプトは、マシン上のすべてのユーザー プロファイル フォルダーと Windows システム フォルダーにアクセスするため、昇格された権限で実行する必要があります。

@echo off
Rem Temp File Purging Tool v1.2.0
Rem Written by Twisty.  Created 1/19/2011.  Modified 6/28/2011.
Rem
Rem This script deletes temp files in locations where malware likes to write its initial
Rem files for infection and also where standard users have write permissions.
Rem
Rem This tool isn't likely to be as helpful to clean systems on which users run with 
Rem Admin permissions.  If you let your users run with Admin permissions you by extension
Rem give much of the malware on the Internet permission to do as it pleases on your workstations.

    

    Rem Identify version of Windows


    SET WinVer=Unknown

    VER | FINDSTR /IL "5.1." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=XP

    rem 5.2 is actually Server 2003, but for our purposes it's the same as XP
    VER | FINDSTR /IL "5.2." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=XP

    VER | FINDSTR /IL "6.0." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=VISTA

    rem 6.1 is actually Windows 7, but for our purposes it's the same as Vista
    VER | FINDSTR /IL "6.1." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=VISTA


    rem Ask user the version if we cannot automatically determine
    If Not "%WinVer%" EQU "Unknown" Goto :SetUserProfPath
    
    Set /P Response="Select OS  [X]P, [V]ista/7: "
    If /i "%Response%" EQU "X" Set WinVer=XP
    If /i "%Response%" EQU "V" Set WinVer=VISTA
    If "%WinVer%" EQU "" Echo Invalid response. Exiting.&goto :eof


:SetUserProfPath
    If %WinVer% EQU XP (
        Set UserProfileRootPath=C:\Documents and Settings
    ) Else (
        Set UserProfileRootPath=C:\Users
    )

    Call :RemoveSubfoldersAndFiles %SystemRoot%\Temp

    Rem Walk through each user profile folder
    Rem This convoluted command is necessary to ensure we process hidden and system folders too
    for /f "delims=" %%D in ('dir /ad /b "%UserProfileRootPath%"') DO Call :ProcessProfileFolder %UserProfileRootPath%\%%D

    Echo.
    Echo Finished! Press a key to exit...
    Pause>Nul

goto :EOF


:ProcessProfileFolder

    Set FolderName=%*

    Rem Leave if it's not a user profile folder
    If Not Exist "%FolderName%\ntuser.dat" goto :EOF

    Rem Leave it's a profile folder on the exclude list
    If /I "%FolderName%" EQU "%UserProfileRootPath%\Default" goto :EOF
    If /I "%FolderName%" EQU "%UserProfileRootPath%\Default User" goto :EOF
    If /I "%FolderName%" EQU "%UserProfileRootPath%\NetworkService" goto :EOF
    If /I "%FolderName%" EQU "%UserProfileRootPath%\LocalService" goto :EOF

    Set UserProfilePath=%FolderName%

    Rem Clean up these folders
    If %WinVer% EQU XP (
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\Local Settings\Temp
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\Local Settings\Temporary Internet Files
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\Application Data\Sun\Java\Deployment\cache

    ) Else (
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Temp
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\LocalLow\Temp
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\LocalLow\Sun\Java\Deployment\cache
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Microsoft\Windows\Temporary Internet Files
    )
    

goto :EOF


:RemoveSubfoldersAndFiles

    Set FolderRootPath=%*

    Rem Confirm target folder exists
    If Not Exist "%FolderRootPath%" Goto :EOF

    Rem Make the folder to clean current and confirm it exists...
    CD /D %FolderRootPath%

    Rem Confirm we switched directories
    If /I "%CD%" NEQ "%FolderRootPath%" Goto :EOF

    Rem ...so that this command cannot delete the folder, only everything in it
    Echo Purging %CD%
    RD /S /Q . >>nul 2>>&1

goto :EOF

スクリプトの機能拡張

スクリプトの拡張性の一部は、プロシージャの使用にあります:RemoveSubfoldersAndFiles。フォルダの内容を削除するには、このプロシージャを呼び出して、フォルダのパスを唯一のパラメータとして渡すだけです(それなし(二重引用符で囲む必要があります)。このルーチンは、存在しないパス、何らかの理由でアクセスできないフォルダ、パスの下の一部のファイルやフォルダが使用中であったり削除を拒否したりするケースを適切に処理します。

各ユーザーのプロファイルにある追加のフォルダをクリーンアップするには

セクションでRem Clean up these folders追加の呼び出しを追加します:サブフォルダとファイルの削除サブルーチン。たとえば、各ユーザーの\AppData\Local\Microsoft\Windows\Temporary Internet Filesフォルダー内のすべての内容を削除するには、次の行を追加します。

Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Microsoft\Windows\Temporary Internet Files

%UserProfilePath%通常の変数ではなく、スクリプト定義の変数を使用していることに注意してください%USERPROFILE%。スクリプトがマシン上の各ユーザー プロファイルを反復処理すると、スクリプトのバージョンが動的に更新されます。

ユーザープロファイル外にあるフォルダをクリーンアップするには

サブルーチンで:SetUserProfPath、再度呼び出しを追加します。:サブフォルダとファイルの削除手順。例:

Call :RemoveSubfoldersAndFiles C:\Temp

関連情報