;Set environment variables
If Not @LogonMode
Break On
Else
Break Off
EndIf
Dim $SO
$SO=SetOption('Explicit','On')
$SO=SetOption('NoVarsInStrings','On')
$SO=SetOption('NoMacrosInStrings','On')
$SO=SetOption('WrapAtEOL','On')
;Declare the base registry key and a temp var to suppress values returned to the screen
Dim $BaseKey, $RC
;Set the temp folder location as a global to be available to all scripts
Global $OLTempFolder
$BaseKey = 'HKEY_CURRENT_USER\Software\Microsoft\Office\'
;Depending on what Office version is installed we check the key and location and then
;based upon the returned data we then delete the files based on how many days old they are
;Setting the file delete to 1 or 2 days should be sufficient for most users.
IF INGROUP ("del_olk")
MESSAGEBOX ("NaB Testar 1", "Kärnhem")
; -- Determine version of Outlook
Select
Case KeyExist($BaseKey+'12.0\Outlook\Security')
$OLTempFolder = ReadValue($BaseKey+'12.0\Outlook\Security','OutlookSecureTempFolder')
$RC = ClearOutlookTemp(1)
Case KeyExist($BaseKey+'11.0\Outlook\Security')
$OLTempFolder = ReadValue($BaseKey+'11.0\Outlook\Security','OutlookSecureTempFolder')
$RC = ClearOutlookTemp(1)
Case KeyExist($BaseKey+'10.0\Outlook\Security')
$OLTempFolder = ReadValue($BaseKey+'10.0\Outlook\Security','OutlookSecureTempFolder')
$RC = ClearOutlookTemp(1)
Case KeyExist($BaseKey+'9.0\Outlook\Security')
$OLTempFolder = ReadValue($BaseKey+'9.0\Outlook\Security','OutlookSecureTempFolder')
$RC = ClearOutlookTemp(1)
Case 1
;Unable to locate the folder path so exit the script and set error to 3
$OLTempFolder = ""
Exit 3
EndSelect
MESSAGEBOX ("NaB Testar 2", "Kärnhem")
ENDIF
;*** REQUIRED UDF SCRIPTS - DO NOT MODIFY THESE SCRIPTS BELOW
;*** These UDF scripts are copied here for ease of scripting only
;*** You may want to verify that you have the latest versions of these UDF scripts
;*** However they have been tested on Server 2003, XP, and Terminal Server 2003 and the script
;*** currently works with the these UDF scripts below.
Function ClearOutlookTemp($Days)
Dim $RC
;The $Days value determines how many days old the file must be before it is deleted
;Checks to ensure that the location of the temporary Outlook files is at least 12 characters
;If you have modified the folder location and it is less, then set the length check to that value
;It is there as a safeguard to prevent deleting files from the root down if the var was blank
If Len($OLTempFolder) >12
$RC = CleanDirectory($OLTempFolder,'*.*',$Days)
EndIf
EndFunction
Function CleanDirectory($directories, $filter, optional $olderas, optional $countonly)
Dim $rc, $timediff, $filename, $filefilter, $tempdir
Dim $filecount, $dircount
$dircount=0
$filecount=0
$olderas=IIf(Val($olderas)>0,Val($olderas),0)
$countonly=IIf(Val($countonly),1,0)
If Not (VarType($directories) & 8192)
$directories=Split($directories,'')
EndIf
If Not (VarType($filter) & 8192)
$filter=IIf(Trim($filter),$filter,'*.*')
$filter=Split($filter,'')
EndIf
For Each $tempdir In $directories
If $tempdir<>'' And Exist($tempdir)
For Each $filefilter In $filter
If $filefilter<>''
$filefilter=fullfile($tempdir,$filefilter)
$filename=Dir($filefilter,1)
While $filename<>'' And @ERROR = 0
If $filename<>'.' And $filename<>'..'
$filename=fullfile($tempdir,$filename)
If GetFileAttr($filename) & 16
$rc=cleandirectory($filename,$filter,$olderas,$countonly)
If InStr($rc,',')
$rc=Split($rc,',')
$dircount=$dircount+$rc[0]
$filecount=$filecount+$rc[1]
EndIf
$rc=SetFileAttr($filename,128)
If Not $countonly
RD $filename
If Not @ERROR
$dircount=$dircount+1
EndIf
EndIf
Else
$timediff=datemath(@DATE,Left(GetFileTime($filename),10))
If $timediff>=$olderas
If $countonly
$filecount=$filecount+1
Else
$rc=SetFileAttr($filename,128)
Del $filename /c /f /h
If Not @ERROR
$filecount=$filecount+1
EndIf
EndIf
EndIf
EndIf
EndIf
$filename=Dir('',1)
Loop
EndIf
Next
EndIf
Next
$cleandirectory=''+$dircount+','+$filecount
EndFunction
Function FullFile($path1, optional $path2)
Dim $a, $path3
$a=UBound($path1)
if $a>0
$path3=$path1[$a]
ReDim Preserve $path1[$a-1]
$path1=fullfile($path1,$path3)
EndIf
If UBound($path1)=0
$path1=$path1[0]
EndIf
If Right($path1,1)='\'
$path1=Left($path1,Len($path1)-1)
EndIf
If $path2
If Left($path2,1)='\'
$path2=Right($path2,Len($path2)-1)
EndIf
$fullfile=LCase($path1+'\'+$path2)
Else
$fullfile=$path1
EndIf
EndFunction
Function DateMath($ExpD1,$ExpD2)
Select
Case InStr($ExpD1,'/') And InStr($ExpD2,'/')
; two date passed - return daysbetween integer
$DateMath=SerialDate($ExpD1)-SerialDate($ExpD2)
If $DateMath<0
$DateMath=$DateMath*-1
EndIf
Case InStr($ExpD1,'/') and 1-InStr($ExpD2,'/')
; date and a number passed - return date
$ExpD2=0+$ExpD2
$Datemath=SerialDate(SerialDate($ExpD1)+$ExpD2)
Case 1 ; incorrect parameters passed
EndSelect
EndFunction
Function SerialDate($ExpD)
Dim $z,$h,$a,$b,$c,$y,$m,$d
If InStr($ExpD,'/') ; date passed
$y=Val(SubStr($ExpD,1,4))
$m=Val(SubStr($ExpD,6,2))
$d=Val(SubStr($ExpD,9,2))
If $m<3
$m=$m+12
$y=$y-1
EndIf
; return an integer
$SerialDate=$d+(153*$m-457)/5+365*$y+$y/4-$y/100+$y/400-306
Else ; integer passed
$z=0+$ExpD+306 ; cast numeric
$h=100*$z-25
$a=$h/3652425
$b=$a-$a/4
$y=(100*$b+$h)/36525
$c=$b+$z-365*$y-$y/4
$m=(5*$c+456)/153
$d=$c-(153*$m-457)/5
If $m>12
$y=$y+1
$m=$m-12
EndIf
$m=Right('0'+$m,2)
$d=Right('0'+$d,2)
; return a string date
$SerialDate=''+$y+'/'+$m+'/'+$d
EndIf
EndFunction