Over the years, I’ve had various people that have had trouble logging into their Windows computer. Windows would login to a Temporary profile. It is an easy fix, but not so easy from a distance since it involves editing the registry. I don’t like sending regedit commands to users since so many things could go wrong. In response to the many requests I received, I wrote the script below in AutoIT. It’s simple and easy for the user to double-click the executable file after restarting into Safe Mode. It fixes the Corrupted Profile. The code isn’t pretty, but leave a comment if you find anything that doesn’t work.
If you want to learn more about the Windows Temporary Profile, search for: windows temporary profile fix
I hope this helps someone.
Thanks!
#NoTrayIcon
#RequireAdmin
#include
Opt("TrayMenuMode",3) ;
$settingsitem = TrayCreateItem("Settings");
TrayCreateItem ("")
$exititem = TrayCreateItem("Exit")
TraySetIcon("Shell32.dll",14) TraySetToolTip("Running Fix Profile") TraySetState() Func CheckMenuItem()
$msg = TrayGetMsg() Select Case
$msg = $exititem Exit EndSelect EndFunc For $i = 1 To 50 Local $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList", $i) CheckMenuItem()
If @error <> 0 Then
ExitLoop
if stringright ($var,4) = ".bak" Then
$slen = StringLen ($var)
$new = stringleft ($var,$slen - 4)
$copykey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $new $destkey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $new & ".old" _RegMoveKey($copykey, $destkey)
$movesourcekey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $var $movedestkey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & $new _RegMoveKey ($movesourcekey, $movedestkey) ; Parameters.....: $s_key - Source key ; $s_val - Source value ;RefCount set to 0 RegWrite ($movedestkey,"RefCount","REG_DWORD",0) CheckMenuItem() ; Write Log file Local $file = FileOpen("fixlog.txt", 1) If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf ; Get current system time $tCur = _Date_Time_GetSystemTime() FileWrite($file, _Date_Time_SystemTimeToDateTimeStr($tCur) & @CRLF) FileWrite($file, "Move From: " & $copykey & @CRLF) FileWrite($file, "Move To: " & $destkey & @CRLF) FileWrite($file, "Move From: " & $movesourcekey & @CRLF) FileWrite($file, "Move To: " & $movedestkey & @CRLF) FileWrite($file, "Changed RefCount Value to 0" & @CRLF) FileClose($file) MsgBox (0,"Completed","Press OK to Exit. Restart computer and login like normal.")
Exit
Else
MsgBox (0,"Completed","Press OK to Exit. A bad profile was not found. Please contact the Help Desk for more troubleshooting ideas.")
Exit
EndIf
Next