Windows Remove Temporary Profiles

Scripts and guide by Soren Birk.

This scripts checks for temporary profiles in the registry and deletes them, if any found.

Tested with:

  • OPSI 4.0.7.3.5
  • Winst 4.11.6.11
  • Windows 7, 64-Bit

Tree:

CLIENT_DATA
  ├ registrylogo.png
  └ once.ins

once.ins

; Author Soren Birk
 
[Actions]
requiredWinstVersion >= "4.11.2.6"
 
DefVar $ProductId$
DefVar $UserProfileName$
DefVar $SID$
DefStringList $SIDcmd$
DefStringList $UserProfileNamesList$
 
set $UserProfileNamesList$ = getOutStreamFromSection ('DosInAnIcon_list_profiledir')
 
; ----------------------------------------------------------------
; - Please edit these values                                     -
; ----------------------------------------------------------------
Set $ProductId$       = "remove-temp-profiles"
; ----------------------------------------------------------------
comment "Show product logo"
ShowBitmap "%ScriptPath%\registrylogo.png" "Remove temporary profiles"
 
Message "Removing temporary profiles ..."
 
comment "Removing .bak-files"
ChangeDirectory "%SCRIPTPATH%"
for %prof% in $UserProfileNamesList$ do sub_remove_bak
 
 
[DosInAnIcon_list_profiledir]
@echo off
dir "%ProfileDir%" /b /ad
 
[sub_remove_bak]
Set $UserProfileName$ = "%prof%"
if not ($UserProfileName$ = "") and not ($UserProfileName$ = "All Users") and not ($UserProfileName$ = "Public") and not ($UserProfileName$ = "LocalService") and not ($UserProfileName$ = "NetworkService")
	Set $SIDcmd$ = getOutStreamFromSection ('DosInAnIcon_getuser')
	Set $SID$ = trim(takeFirstStringContaining($SIDcmd$,"S-"))
 
	comment "Removing .bak-file for " + $UserProfileName$ + " if it exists..."
	Registry_install
endif
 
[DosInAnIcon_getuser]
wmic useraccount where name='$UserProfileName$' get sid
 
[Registry_install]
Deletekey [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SID$.bak]

QR Code
QR Code userspace:windows_remove_temporary_profile (generated for current page)