thechosenneo
Goto Top

In Outlook den Temp Ordner löschen

Hallo liebe Administrator-Gemeinde,

gibt es die Möglichkeit den Temporären Ordner von Outlook "Content.Outlook" zu deaktiveren?

Wenn dies nicht funktioniert. Ist es möglich in Outlook mit Hilfe von VBA es einzurichten das er bei jeder neuen Email prüft ob der Ordner in dem Pfad "C:\Users\§Benutzername$\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook" vorhanden ist und wenn ja das er ihn direkt löscht?

Ihr würdet mir damit echt Helfen. Ich habe leider immer Probleme mit diesem Ordner.

Vielen Dank.

Liebe Grüße

Mario face-smile

Content-ID: 251276

Url: https://administrator.de/contentid/251276

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

jsysde
jsysde 08.10.2014 um 11:13:27 Uhr
Goto Top
Moin.
Ich habe leider immer Probleme mit diesem Ordner.
Die da wären?

Cheers,
jsysde
colinardo
colinardo 08.10.2014 aktualisiert um 11:23:55 Uhr
Goto Top
Hallo Mario,
ich hatte das damals mit einem AutoIT-Script bei solchen Clients bei denen sich das Problem nicht beheben ließ, als Übergangslösung gemacht, sollte aber mittlerweile bei neueren Outlooks nicht mehr auftreten, die sind dahingehend alle gepatcht.
#NoTrayIcon
$OutlookVersion = StringRight(RegRead("HKEY_CLASSES_ROOT\Outlook.Application\CurVer",""),2) & ".0"  
$folderOffice = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\" & $OutlookVersion & "\Outlook\Security","OutlookSecureTempFolder")  

if  $folderOffice = "" then  
	$ietempfolder = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Cache")  
	Switch $OutlookVersion
		Case "11.0"  
			$search = FileFindFirstFile($ietempfolder & "\OLK???")  
		Case "12.0"  
			$search = FileFindFirstFile($ietempfolder & "\Content.Outlook\OLK???")  
		Case "14.0"  
			$search = FileFindFirstFile($ietempfolder & "\????????")  
		Case "15.0"  
			$search = FileFindFirstFile($ietempfolder & "\Content.MSO")  
	EndSwitch
	$nameOLK = FileFindNextFile($search)
	if @error = 1 then
		FileClose($search)
		exit 1
	EndIf
	FileClose($search)
	$folderOffice = $ietempfolder & "\" & $nameOLK & "\"  
EndIf
FileSetAttrib($folderOffice & "*.*","-R")  
$ret = FileDelete($folderOffice & "*.*")  
if $ret = 1 then
	exit(0)
else
	exit(1)
EndIf
Grüße Uwe
narthan
narthan 08.10.2014 aktualisiert um 11:39:12 Uhr
Goto Top
Hallo Mario,

ich hoffe folgendes kann dir weiterhelfen:

HIER

Die letzten 3-5 kurzen Abschnitte geben die Lösung wieder und eine optionale Lösung durch ein Programm (CCCleaner; Freeware) wird ebenfalls vorgeschlagen.

LG, narthan


---
Edit: Ups ich war zu spät. Vlt. nimmst du einfach das Script von Uwe face-smile
TheChosenNeo
TheChosenNeo 08.10.2014 um 11:28:39 Uhr
Goto Top
Der Ordner von dem Pfad oben. In dem Outlook immer wieder einen neuen anlegt mit wahrlosen Zahlen und Buchstabenkonstellationen. Deshalb würde ich ja gerne direkt immer den Ordner "Content.Outlook" löschen sobald ich zum Beispiel eine neue Email bekommen habe. Das würde das Problem sofort lösen.

Vielen Dank.

Mario face-smile
TheChosenNeo
TheChosenNeo 08.10.2014 aktualisiert um 11:36:00 Uhr
Goto Top
Hallo Uwe,

wie muss ich diesen Code verwenden damit er diesen Ordner immer wieder selbst löscht ohne das ich selbst aktiv werden müsste?

Danke

Mario face-smile

P.S. Wenn ich diesen Code versuche zu Verwenden kommen immer wieder Fehler aufgrund Ungültiges Zeichen. Was mache ich da falsch wenn ich den Code nicht so verwenden kann?
colinardo
colinardo 08.10.2014 aktualisiert um 11:38:23 Uhr
Goto Top
Zitat von @TheChosenNeo:
wie muss ich diesen Code verwenden damit er diesen Ordner immer wieder selbst löscht ohne das ich selbst aktiv werden
müsste?
in meinem Fall hat es damals gereicht, den Code zur EXE zu kompilieren (s. AutoIt Seite, Link oben.) und dann in den Autostart des Rechners zu packen. Lässt sich aber bei Bedarf auch in ein Event in Outlook einbinden ... jedoch bekommst du dann eventuell Probleme mit Outlook wenn dieses geöffnet ist und Dateien darin im Zugriff hat. Das hat schon so manches mal bei Usern zu Abstürzen geführt face-wink kann ich also nicht empfehlen !
TheChosenNeo
TheChosenNeo 08.10.2014 um 11:42:57 Uhr
Goto Top
Ich hab leider nur die Möglichkeit an meinen Arbeitsrechner im Outlook etwas zu verändern oder über VBA. Programme oder der gleichen kann ich weder runterladen noch auf den PC aufspielen. Deshalb brauche ich irgendwie eine Lösung in Outlook die das Problem behebt. Aber trotzdem tausend dank den ich glaube der Ansatz wäre wenn das bei mir möglich gewesen wäre, perfekt gewesen.

Mario face-smile
colinardo
colinardo 08.10.2014 aktualisiert um 11:45:38 Uhr
Goto Top
Zitat von @TheChosenNeo:
Ich hab leider nur die Möglichkeit an meinen Arbeitsrechner im Outlook etwas zu verändern oder über VBA. Programme
oder der gleichen kann ich weder runterladen noch auf den PC aufspielen. Deshalb brauche ich irgendwie eine Lösung in Outlook
die das Problem behebt. Aber trotzdem tausend dank den ich glaube der Ansatz wäre wenn das bei mir möglich gewesen
wäre, perfekt gewesen.
naja in VBS lässt sich das natürlich auch schreiben face-wink habe aber dafür grad keine Zeit.... eventuell später mal, wenn du sagst für welche Outlookversion du es brauchst lässt es sich auch noch vereinfacht schreiben ...
TheChosenNeo
TheChosenNeo 08.10.2014 um 12:00:52 Uhr
Goto Top
Das wäre echt sehr nett von dir. Ich verwende hier Outlook 2010.

Danke.
colinardo
colinardo 08.10.2014 aktualisiert um 12:25:51 Uhr
Goto Top
Das hier in ThisOutlookSession oder DieseOutlookSitzung einfügen und Outlook neu starten. Dies leert den Outlook-Temp-Ordner bei jedem Start von Outlook.
Private Sub Application_Startup()
    EmptyOutlookTempFolder
End Sub

Sub EmptyOutlookTempFolder()
    dim tempfolder as String, objShell as Object, fso as Object, subfolder as Object
    Set objShell = CreateObject("Wscript.Shell")  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    tempfolder = objShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache") & "\Content.Outlook"  
    If fso.FolderExists(tempfolder) then
      For Each subfolder In fso.GetFolder(tempfolder).SubFolders
          On Error Resume Next
          fso.DeleteFile subfolder.Path & "\*.*"  
      Next
    End if
    Set objShell = Nothing
    Set fso = Nothing
End Sub
Das in Outlook die Ausführung von Makros erlaubt ist natürlich Voraussetzung.

Grüße Uwe
TheChosenNeo
TheChosenNeo 08.10.2014 um 12:26:20 Uhr
Goto Top
Vielen Dank,

ist das auch irgendwie möglich das er dies macht sobald ich eine Neue Email bekommen habe? Da ich Outlook nur einmal schließe und die Probleme ja immer in dem Ordner stattfinden.

Danke Mario face-smile
colinardo
colinardo 08.10.2014 aktualisiert um 12:28:51 Uhr
Goto Top
Zitat von @TheChosenNeo:
ist das auch irgendwie möglich das er dies macht sobald ich eine Neue Email bekommen habe? Da ich Outlook nur einmal
schließe und die Probleme ja immer in dem Ordner stattfinden.
das geht auch, aber wie oben geschrieben ohne Gewähr da es zu Abstürzen von Outlook führen kann.

Private Sub Application_NewMail()
   EmptyOutlookTempFolder
End Sub

Sub EmptyOutlookTempFolder()
    dim tempfolder as String, objShell as Object, fso as Object, subfolder as Object
    Set objShell = CreateObject("Wscript.Shell")  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    tempfolder = objShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache") & "\Content.Outlook"  
    If fso.FolderExists(tempfolder) then
      For Each subfolder In fso.GetFolder(tempfolder).SubFolders
          On Error Resume Next
          fso.DeleteFile subfolder.Path & "\*.*"  
      Next
    End if
    Set objShell = Nothing
    Set fso = Nothing
End Sub
TheChosenNeo
TheChosenNeo 08.10.2014 um 12:32:34 Uhr
Goto Top
Danke,

das werde ich gleich mal Testen.

Bei mir kommt dann folgender Fehler:

Laufzeitfehler '-2147024894 (80070002)':

Ungültige Wurzel im Registrierungsschlüssel
"HKEY_CURRENT_USER\Software\Mircrosoft\Windows\CurrentVersion\Explorer\ShellFolders\Cache".

Kann das sein das mein Pfad von oben beschrieben vielleicht wo anders liegt und er es nicht finden kann?

Mario face-smile
colinardo
colinardo 08.10.2014 aktualisiert um 12:42:35 Uhr
Goto Top
Ungültige Wurzel im Registrierungsschlüssel
"HKEY_CURRENT_USER\Software\Mircrosoft\Windows\CurrentVersion\Explorer\ShellFolders\Cache".
da hast du einen Buchstabendreher eingebaut face-smile
"Mircrosoft"

und das Leerzeichen zwischen "ShellFolders" hast du auch nicht gelassen, wie hast du das kopiert alter ?????

Bitte über Quelltext kopieren !!
TheChosenNeo
TheChosenNeo 08.10.2014 um 12:45:34 Uhr
Goto Top
Ja das tut mir leid. Ich habe den Fehler aber nur bei der Fehlerbeschreibung. Im Ursprungscode habe ich deine Zeilen 1:1 kopiert.
colinardo
colinardo 08.10.2014 aktualisiert um 12:52:35 Uhr
Goto Top
Zitat von @TheChosenNeo:

Ja das tut mir leid. Ich habe den Fehler aber nur bei der Fehlerbeschreibung. Im Ursprungscode habe ich deine Zeilen 1:1 kopiert.
welches OS ? Navigiere in der Registry mal in diesen Schlüssel ob dort der Wert Cache existiert. Ansonsten mach es vereinfacht so ...

Private Sub Application_NewMail()
   EmptyOutlookTempFolder
End Sub

Sub EmptyOutlookTempFolder()
    Dim tempfolder As String, objShell As Object, fso As Object, subfolder As Object
    Set objShell = CreateObject("Wscript.Shell")  
    Set fso = CreateObject("Scripting.FileSystemObject")  
    userprofile = objShell.ExpandEnvironmentStrings("%userprofile%")  
    tempfolder = userprofile & "\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook"  
    If fso.FolderExists(tempfolder) Then
      For Each subfolder In fso.GetFolder(tempfolder).SubFolders
          On Error Resume Next
          fso.DeleteFile subfolder.Path & "\*.*"  
      Next
    End If
    Set objShell = Nothing
    Set fso = Nothing
End Sub
TheChosenNeo
TheChosenNeo 08.10.2014 um 12:55:42 Uhr
Goto Top
Oh Sorry. Hatte in einer anderen Zeile einen Fehler warum er nicht korrekt weiter gemacht hat. Aber der Ordner ist jetzt noch vorhanden wenn ich das Makro ausführe. Löscht das nur den Inhalt in dem Temp-Ordner?
colinardo
Lösung colinardo 08.10.2014 aktualisiert um 13:06:46 Uhr
Goto Top
Zitat von @TheChosenNeo:
Löscht das nur den Inhalt in dem Temp-Ordner?
Ja nur den Inhalt, das reicht aber auch, wie gesagt Outlookabstürze könnten die Folge sein ...

lässt sich aber ändern indem man die Löschzeile durch diese austauscht:
fso.DeleteFolder subfolder.Path, True
dann wird der ganze Ordner gelöscht, aber nur solange Outlook keine Files mehr in dem Ordner offen hat !
TheChosenNeo
TheChosenNeo 08.10.2014 um 13:07:12 Uhr
Goto Top
Echt vielen Dank.

Jetzt ist das Problem mit einem Schlag entfernt. face-wink