Anmerkung: Überprüfung mit cacls für \system32\config\system wird in WOW64 IMMER fehlschlagen (zum Beispiel von %systemroot% \syswow64\cmd.exe / 32 bit Total Commander), so dass Skripte, die in einer 32bit-Shell in einem 64bit-System laufen, eine Endlosschleife bilden... Besser wäre es, die Rechte für das Prefetch-Verzeichnis zu prüfen:
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\Prefetch\"
Win XP bis 7 getestet, jedoch schlägt es in WinPE fehl, da es in der Windows 7 install.wim weder ein solches Verzeichnis noch cacls.exe gibt
Auch in winPE UND wow64 schlägt die Prüfung mit openfiles.exe fehl:
OPENFILES > nul
Unter Windows 7 wird die Fehlerebene mit "1" angezeigt, mit dem Hinweis, dass das Zielsystem ein 32-Bit-Betriebssystem sein muss.
Beide Prüfungen werden wahrscheinlich auch in der Wiederherstellungskonsole fehlschlagen.
Was funktioniert in Windows XP - 8 32/64 bit, in WOW64 und in WinPE sind: Tests zur Erstellung von Verzeichnissen (WENN der Administrator das Windows-Verzeichnis nicht mit Teppichbomben mit Berechtigungen für alle versehen hat...) und
net session
und
reg add HKLM /F
Kontrollen.
Auch eine weitere Anmerkung in einigen Windows XP (und andere Versionen wahrscheinlich auch, je nach Admin's Bastelei) abhängig von Registry-Einträge direkt Aufruf bat/cmd von .vbs Skript wird mit der Info, dass bat/cmd Dateien nicht mit etwas verbunden sind fehlschlagen...
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
cscript "%temp%\getadmin.vbs" //nologo
Der Aufruf von cmd.exe mit den Parametern der bat/cmd-Datei funktioniert dagegen problemlos:
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "cmd.exe", "/C %~s0", "", "runas", 1 >> "%temp%\getadmin.vbs"
cscript "%temp%\getadmin.vbs" //nologo