Помогите разобраться: никак не получается корректно подправить значение %ProgramFiles% во время загрузки WinPE.
У меня WinPe грузится из сжатого образа HDD, а сама Program Files находится вне образа, соотв-но на другом диске. В зависимости от количества дисков компа, буква сидюка плавает.
В общем из секции RunOnceEx запускается батник, который через "reg add..." устанавливает нужные пути в переменную %ProgramFiles% и в
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProgramFilesDir
Но система определяет, что переменная %ProgramFiles% не изменилась. (x:\Program Files)
Если же вызвать в свойствах системы "переменные среды" и просто нажать "ОК", то
все начинает правильно работать.
setenv.exe мне не помогла.
может еще надо какую-то функцию через rudll32 вызвать для решения проблемы???
-------------
Нашел решение: Эксплорер грузим не через реестр или PELoader, а через батник, правда потом приходится немного поизвращатся, чтобы после загрузки завершить процесс этого батника
Код:
![Выделить весь код](images/misc/selectcode.png)
@echo off
IF EXIST "%ProgramFiles%\pf.tag" goto PFexist
FOR %%d IN (C: D: E: F: G: H: I: J: K: l: m: n: o: p: q: R: s: t: u: v: w: X: Y: Z: B:) DO (
IF EXIST "%%d\i386\Programs\pf.tag" set PF=%%d\i386\Programs
IF EXIST "%%d\minint\Programs\pf.tag" set PF=%%d\minint\Programs
IF EXIST "%%d\wnpe\Programs\pf.tag" set PF=%%d\wnpe\Programs
IF EXIST "%%d\Programs\pf.tag" set PF=%%d\Programs
IF EXIST "%%d\I386\Program Files\pf.tag" set PF=%%d\I386\Program Files
IF EXIST "%%d\minint\Program Files\pf.tag" set PF=%%d\minint\Program Files
IF EXIST "%%d\wnpe\Program Files\pf.tag" set PF=%%d\wnpe\Program Files
IF EXIST "%%d\Program Files\pf.tag" set PF=%%d\Program Files
IF NOT "%PF%" == "" goto foundPFtag
)
if "%PF%" == "" goto PFexist
:foundPFtag
set ProgramFiles=%PF%
:PFexist
cls
echo %programfiles%
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v ZZZ_loader_exit0 /t REG_EXPAND_SZ /d "hiderun.exe /w cmd.exe /c reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v ZZZ_loader_exit0 /f" /f
start explorer.exe
:loop
::Пауза 2 сек
autoit3.exe %SystemRoot%\system32\sleep.au3
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v ZZZ_loader_exit0
if %errorlevel% == 0 goto loop