Примечание: проверка с помощью cacls для \ system32 \ config \ system ВСЕГДА завершится неудачей в WOW64 (например, из% systemroot% \ syswow64 \ cmd.exe / 32-битного Total Commander), поэтому скрипты, которые запускаются в 32-битной оболочке в 64-битной системебудет зацикливаться вечно ... Лучше бы проверить права на каталог Prefetch:
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\Prefetch\"
Протестирован Win XP до 7, однако в WinPE он не работает, так как в Windows 7 install.wim таких каталогов и каталогов нет..exe
Также в winPE AND wow64 не удается выполнить проверку с помощью openfiles.exe:
OPENFILES > nul
В Windows 7 уровень ошибки будет равен «1» с информацией о том, что «целевая система должна работать 32 битаsystem "
Обе проверки, вероятно, также не пройдут в консоли восстановления.
Что работает в Windows XP - 8 32/64 бит, в WOW64 и в WinPE: dirтесты создания (ЕСЛИ администратор не ковертил взорванный каталог Windows с разрешениями для всех ...) и
net session
и
reg add HKLM /F
.
Также одинбольше примечания в некоторых Windows XP (и других версияхвероятно, тоже, в зависимости от действий администратора) в зависимости от записей реестра, непосредственно вызывающих bat / cmd из сценария .vbs, произойдет сбой с информацией о том, что файлы bat / cmd ни с чем не связаны ...
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
cscript "%temp%\getadmin.vbs" //nologo
Вызов cmd.exe с параметром bat / cmd файла с другой стороны работает нормально:
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