Нам необходимо запустить 32-разрядную версию клиента удаленного рабочего стола в 64-разрядной версии Vista, поскольку часть нашего продукта интегрируется с ним и взаимодействует с приложением на стороне сервера терминалов через виртуальный канал. Интеграция загружает некоторые сторонние 32-битные драйверы, и невозможно загрузить 32-битную DLL в 64-битном процессе.
Обычно 32-битную версию Windows-приложения довольно просто запустить из командной строки, например, окно запуска:
C:\Windows\SysWOW64\Notepad.exe
Вы можете сказать, что процесс 32-битный, отметив в мониторе задач \ процессы, так как он будет иметь * 32 рядом с именем файла.
Однако клиент удаленного рабочего стола (mstsc.exe) не хочет играть в мяч. Он всегда запускает 64-битную версию из C: \ Windows \ System32 \ mstsc.exe независимо от того, как я ее запускаю (окно запуска, 32-битные окна cmd и т. Д.). Я пытался написать 32-битную программу на C ++ для ее создания (обычно дочерние процессы также 32-битные), но это не сработало.
Я также пытался позвонить:
Wow64DisableWow64FsRedirection
Wow64RevertWow64FsRedirection
до и после запуска mstsc.exe, но это тоже не помогло.
Кто-нибудь знает способ обойти это?
[Изменить]
Я провел дополнительное исследование с помощью монитора процессов, и кажется, что сначала запускается 32-разрядная версия mstsc, но затем создается второй 64-разрядный процесс, а 32-разрядные версии закрываются.