как запустить другой процесс в режиме совместимости с XP? - PullRequest
6 голосов
/ 25 января 2010

Наше приложение требует, чтобы драйвер устройства 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 от Windows 7?
  • Отличаются ли ключи / настройки для 32-битных и 64-битных систем?
  • Есть ли способ напрямую запросить это, когда я вызываю CreateProcess ()?

1 Ответ

3 голосов
/ 26 января 2010

Вы можете установить переменную среды __ COMPAT_LAYER (установив ее в своем процессе перед вызовом CreateProcess или создать новый блок среды для CreateProcess)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...