Using REG.EXE, built into Windows XP, Windows Server 2003, Windows Vista, and later operating systems, or installed from the Windows 2000 Support Tools, information from tip 11125 ยป What is the meaning the State Value Name in a user's registry profile, and GetUserSID.bat, I have scripted IsProfileTemp.bat to determine if the current user has logged on with a temporary profile.

The syntax for using IsProfileTemp.bat is:

\[call\] IsProfileTemp YorN

Where YorN is a call directed environment variable that will contain a Y if the current user's profile is temporary, or an N if it is not temporary.

IsProfileTemp.bat contains:

@echo off
if \{%1\}==\{\} @echo Syntax: IsProfileTemp YorN&goto :EOF
setlocal
set YorN=Y
call GetUserSID SID
if "%SID%" EQU "NONE" goto finish
set key="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%SID%"
set /a State=0x800
for /f "Tokens=2*" %%a in ('reg query %key% /V State^|find "REG_DWORD"') do (
 set /a State=%%b
)
set /a ans="%state%&0x800"
if %ans% NEQ 2048 set YorN=N
:finish
endlocal&set %1=%YorN%