как запустить другой процесс в режиме совместимости с XP?
-
22-09-2019 - |
Вопрос
Для того чтобы наше приложение могло установиться и запуститься, необходимо установить драйвер устройства HASP SRM.
В настоящее время только их драйверы 5.50 стабильно работают на всех протестированных платформах (их драйверы 5.75 (официальные) и 5.86 (бета) дают сбой примерно на 1 из 3 протестированных компьютеров).
Следовательно, их драйверы 5.50 хороши, все остальное, доступное на данный момент, сломано, а драйверы 5.50 отказываются загружаться под Vista и Windows 7.Однако, если я установлю для свойств exe значение «Режим совместимости с XP», их драйвер 5.50 установится и заработает успешно.
Я покопался в реестре Windows 7 и обнаружил, что при запросе режима совместимости есть по крайней мере одна запись:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\
full-path REG_SZ WINXPSP3
Я смогу добавить этот ключ из нашего установщика, прежде чем пытаться запустить установщик драйвера 5.50.
Вопросы:
- Где я могу найти более полное обсуждение режимов совместимости?
- Отличаются ли клавиши/настройки в Vista и в Vista?Windows 7?
- Отличаются ли клавиши/настройки в 32-битной версии и в 32-битной версии?64 бит?
- Есть ли способ напрямую спросить об этом, когда я вызываю CreateProcess()?
Решение
Вы можете установить __COMPAT_LAYER переменная среды (установив ее в своем процессе перед вызовом CreateProcess или создав новый блок среды для CreateProcess)