Войти

Показать полную графическую версию : Режим совместимости с XP


treehel
19-09-2010, 14:22
Попросил друга написать небольшую утилитку для запуска знаменитого BOA Soft PostInstaller с нужными мне параметрами. Получилось вот что:

program CMD;

{$R 'run.res' 'run.rc'}

uses
Forms,
Windows,
SysUtils;

begin
WinExec(pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"'),SW_HIDE);
end.


Проблема в том, что под XP код шикарно работает, а под Vista/7 запускается только если установить режим совместимости с XP. Поскольку софт должен распространяется дальше, это не вариант. Можно ли в самом коде программы указать режим совместимости с XP и, например, запрос прав админа?

Спасибо )

Admiral
19-09-2010, 23:18
treehel вот эту строчку WinExec(pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"'),SW_HIDE); необходимо заменить примерно на такую конструкцию
STARTUPINFO cif = {0};
PROCESS_INFORMATION pi;
CreateProcess(NULL, pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"', NULL, FALSE, NULL, NULL, NULL, NULL, &cif, &pi);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
Примерно, потому что здесь код С, в Делфи аналогичные конструкции (только синтаксис немного отличен).
И запуск будет производится как в ХР так и Севен.




© OSzone.net 2001-2012