Dies ist eine alte Version des Dokuments!


Temporäre Daten per Skript beim Logout bzw. Shutdown löschen (XP)

In TEMP Verzeichnissen sammelt sich bekanntlich so einiges an Datenmüll an und damit Microsoft die Privatsphäre der Anwender schützen kann (Datenschutz), wurden zusätzlich zu dem TEMP-Verzeichnis im Systemordner auch im Userverzeichnis der einzelnen Benutzer eigene TEMP Verzeichnisse angelegt. Der folgende Abschnitt beschreibt das Löschen bzw. Leeren der temporären Verzeichnisse beim Logout bzw. beim Herunterfahren.

Standardmäßig befinden sich die TEMP-Verzeichnisse %TEMP% und %TMP% in %USERPROFILE%/Lokale Einstellungen/Temp und das System TEMP-Verzeichnis in %WINDIR%/Temp

Wenn Sie wissen möchten mit welchen Werten die og System-Variablen 1) 2) belegt sind, rufen Sie ein Terminal auf (Start → Ausführen → cmd) und setzen den Befehl set ab:

C:\ set
ALLUSERSPROFILE=C:\Dokumente und Einstellungen\All Users
APPDATA=C:\Dokumente und Einstellungen\pronto\Anwendungsdaten
CommonProgramFiles=C:\Programme\Gemeinsame Dateien
COMPUTERNAME=VM-XP-01
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\pronto
LOGONSERVER=\\VM-XP-01
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 26 Stepping 5, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1a05
ProgramFiles=C:\Programme
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOKUME~1\pronto\LOKALE~1\Temp
TMP=C:\DOKUME~1\pronto\LOKALE~1\Temp
USERDOMAIN=VM-XP-01
USERNAME=pronto
USERPROFILE=C:\Dokumente und Einstellungen\pronto
windir=C:\WINDOWS

Da manche Programme ihre temporären Dateien in einem TEMP-Verzeichnis ablegen und andere wiederum in einem TMP-Verzeichnis, sind zwei Umgebungsvariablen (%TEMP% und %TMP% vorhanden, die beide auf das Verzeichnis %USERPROFILE%\Lokale Einstellungen\Temp zeigen. Es reicht demnach völlig im Skript nur eine der beiden Variablen zu verwenden um den Inhalt des Benutzer TEMP-Verzeichnis zu löschen. Legen Sie hierfür das folgende Skript rmtemp.cmd an:

%WINDIR%\System32\GroupPolicy\User\Scripts\Logoff\rmtemp.cmd

@echo off
FOR /D %%A IN (%TEMP%\*) DO RD /S /Q "%%A"
DEL %TEMP%\* /s /q

Hinweis: Der Trick mit der FOR-Schleife 3) ist notwendig, weil a) Windows XP leider immer noch zu blöd ist um bei einem RD-Kommando (Remove Directory) 4) einen Asterix (*) als Platzhalter zu akzeptieren. Somit wird durch die FOR-Schleife das RD-Kommando so lange wiederholt, bis keine Verzeichnisse mehr vorhanden sind und b) Microsoft immer noch zu blöd ist um ein Kommando zu implementieren, welches sowohl Dateien und Verzeichnisse löscht. Deshalb der zweite DEL-Befehl 5), welcher die Dateien löscht, die sich direkt in der obersten Ebene des TEMP-Verzeichnis befinden.

Über eine Gruppenrichtlinie 6) können Sie nun dieses Skript beim Abmelden des Benutzers und beim Herunterfahren des Systems automatisch ausführen lassen. Diese Vorgehensweise mit einer GPO und dem Aufruf des Skripts beim Herunterfahren bzw. Abmelden hat uA den Vorteil, dass die Dateien in den TEMP-Verzeichnissen nicht mehr in Benutzung sind (unlocked) und somit vollständig gelöscht werden können.

  • Kopieren Sie das Skript rmtemp.cmd nach %WINDIR%\System32\GroupPolicy\User\Scripts\Logoff (Achtung: Das Verzeichnis ist versteckt)
  • Öffnen Sie den Group Policy Editor: Satrt → Ausführen → gpedit.msc
  • Navigieren Sie nach Benutzerkonfiguration → Windows Einstellungen → Skripts(Anmelden/Abmelden) → Abmelden → Hinzufügen und wählen Sie das Skript rmtemp.cmd aus
  • Bestätigen Sie mit OK und verlassen Sie den Richtlinieneditor

Windows System TEMP-Verzeichnis

Sie können das automatische Löschen per Skript auch auf das Windows System TEMP-Verzeichnis (%WINDIR%\Temp) anwenden, jedoch hat die ganze Sache den Haken, dass normale Benutzer in diesem Verzeichnis nur Dateien und Ordner erstellen, diese aber nicht wieder löschen dürfen. Da auf das System TEMP-Verzeichnis aber auch der Systembenutzer System Vollzugriff hat, können Sie dieses Skript anstatt im Benutzerkontext auch im Maschinenkontext bzw. als reines Shutdown-Skript beim Herunterfahren laufen lassen. Dazu erstellen Sie das Script rmsystmp.cmd und kopieren es nach %WINDIR%\system32\GroupPolicy\Machine\Scripts\Shutdown und stellen dieses wie oben schon beschrieben im Gruppenrichtlinieneditor (gpedit.msc) nicht in der Benutzerkonfiguration sondern in der Computerkonfiguration → Windows Einstellungen → Skripts(Start/Herunterfahren) → Herunterfahren ein.

%WINDIR%\system32\GroupPolicy\Machine\Scripts\Shutdown\rmsystemp.cmd

@echo off
FOR /D %%A IN (%WINDIR%\Temp\*) DO RD /S /Q "%%A"
DEL %WINDIR%\Temp\* /s /q

Hinweis: Sie können natürlich diese beiden Skripte kombinieren und nur ein Skript verwenden, welches beim Abmelden sowohl das Benutzer, wie auch die System TEMP-Verzeichnisse leert. Ergänzen Sie hierfür das og Logoff Skript (Benutzerkonfiguration) wie folgt:

%WINDIR%\system32\GroupPolicy\Machine\Scripts\Logoff\rmtemp.cmd

@echo off
FOR /D %%A IN (%WINDIR%\Temp\*) DO RD /S /Q "%%A"
DEL %WINDIR%\Temp\* /s /q
FOR /D %%A IN (%TEMP%\*) DO RD /S /Q "%%A"
DEL %TEMP%\* /s /q

pronto 2010/03/07 18:12

Nachtrag: Ursprünglich hatte ich das letzte Skript als Shutdown Skript angeboten und mich später gewundert, warum nur das System-Temp Verzeichnis geleert wird und nicht das Benutzer-Temp Verzeichnis. Das liegt daran, dass beim Shutdown das Skript im SYSTEM Kontext läuft. Jetzt ist SYSTEM aber auch ein Benutzer und somit wird die Variable %TEMP% des Benutzers SYSTEM eben mit »%WINDIR%\Temp« aufgelöst. Das letzte Skript im SYSTEM-Kontext abgespult macht folglich zweimal das gleiche; es löscht nur »%WINDIR%\Temp«. Ergo sollte man es entweder, wie jetzt korrigiert, als Logoff-Skript laufen lassen oder die Benutzer-Temp Verzeichnisse direkt ansprechen. Alternativ dazu kann man auch sowohl ein Logoff-Skript wie auch ein Shutdown-Skript konfigurieren aber das überlassen ich jetzt jedem selbst…

Verwandte Artikel:
-> (Batch) Leere Verzeichnisse löschen


pronto 2010/11/15 22:21

win/temp.1302986684.txt.gz (29825 views) · Zuletzt geändert: 2011/04/16 22:44 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0