Использует ли кто-нибудь в этом сообществе определенную методику для пакетного удаления временных данных (таких как временные папки Windows, кэш браузеров и т. д.) для всех пользователей?
Кажется, самое сложное здесь следующее:
- Используйте методику/инструмент, который будет обновляться с течением времени, чтобы соответствовать изменениям в структуре папок каждого продукта.
- Разрешить доступ к папкам других пользователей (запуск от имени администратора/максимальные привилегии)
Решением могли бы стать скрипты/пакетные файлы, но для этого потребуется постоянный мониторинг каждого обновления продукта, чтобы избежать удаления старых файлов/структур папок...
Твои мысли?
решение1
У меня был тот же вопрос, но мотивированный желанием помочь мне в завершении операций по очистке от вредоносных программ. Вот командный скрипт, который я написал с прицелом на модульность, чтобы его можно было легко расширить для будущих ОС и мест расположения временных файлов (я написал его до изучения 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