В общем нужно, чтобы скрипт работал как в 32-битной винде, так и в 64-битной. Соответственно компилировать нужно в 32 бита. Но из скрипта нужно запускать внешнюю программу, которая 64-битная в 64-битной винде (мне нужен msconfig, если это принципиально).
Но если мы откомпилируем строку
в 32-битное приложение, то в 64-битной винде выдается ошибка "приложение не найдено".
Как сделать, чтобы независимо от битности винды и внешнего приложения, внешнее приложение запускалось?
Найденное решение (спасибо Yashied):
Но если мы откомпилируем строку
Код:
ShellExecute (@WindowsDir & "\System32\msconfig.exe")
в 32-битное приложение, то в 64-битной винде выдается ошибка "приложение не найдено".
Как сделать, чтобы независимо от битности винды и внешнего приложения, внешнее приложение запускалось?
Найденное решение (спасибо Yashied):
Код:
$tValue = DllStructCreate('dword')
If @OSArch = 'X64' Then
DllCall('kernel32.dll', 'int', 'Wow64DisableWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf
ShellExecute(@WindowsDir & "\System32\msconfig.exe")
If @OSArch = 'X64' Then
DllCall('kernel32.dll', 'int', 'Wow64RevertWow64FsRedirection', 'ptr', DllStructGetPtr($tValue))
EndIf