Обычно довольно легко запустить 32-битную версию приложения Windows из командной строки, например окно запуска:
C:\Windows\SysWOW64\Notepad.exe
Вы можете определить, что процесс является 32-битным, проверив в мониторе задач \ процессах, так как рядом с именем файла будет * 32.
Однако клиент удаленного рабочего стола (mstsc.exe) не хочет играть в мяч. Он всегда запускает 64-разрядную версию из C: \ Windows \ System32 \ mstsc.exe независимо от того, как я ее запускаю (окно запуска, 32-разрядные окна cmd и т. Д.). Я даже пытался написать 32-битную программу на C ++ для ее создания (обычно дочерние процессы также 32-битные), но это не сработало.
Нам нужно запустить 32-разрядную версию, потому что у нас есть некоторые пользовательские библиотеки DLL, которые интегрированы с удаленным рабочим столом, и невозможно загрузить 32-разрядную dll в 64-разрядном процессе.
Кто-нибудь знает способ обойти это?
Я обнаружил, что единственный способ заставить mstsc работать на 32-битной версии - это запустить зависимость (от sysinternals), а затем открыть mstsc.exe из syswow64. После запуска с помощью начального профилирования оставьте опцию по умолчанию. Это приведет к запуску 32-разрядной версии mstsc *. На данный момент я не нашел другого пути к тому же. Мотыга эта помощь Флавио
Я нашел простой способ справиться с этим.
http://www.davidmoore.info/2009/12/02/running-32-bit-remote-desktop-connection-on-windows-64-bit/
Решение: переименуйте 64-разрядный файл mstsc.exe из System32, чтобы он не заменял 32-разрядный процесс.
Это просто, если у вас есть права переименовать этот файл. Если вы используете NTFS, вы можете получить ошибку «Вам требуется разрешение от TrustedInstaller для внесения изменений в этот файл».
Чтобы избежать этой ошибки, вы можете стать владельцем файла и предоставить себе полные права:
Теперь вы можете переименовать файл mstsc.exe во что-то вроде mstsc.exe.bak
Затем вы можете запустить mstsc.exe из% SystemRoot% \ SysWOW64, и у вас будет запущено 32-разрядное подключение к удаленному рабочему столу.
Это сбивает с толку 64-битные версии Windows, но вещи, находящиеся в каталоге SysWOW64, являются 32-битными исполняемыми файлами, которые запускаются в 'WOW' (Windows в Windows). Вещи, расположенные в каталоге System32, являются 64-битными двоичными файлами и не имеют 32-битных эквивалентов. Название здесь сделано из соображений совместимости и неубедительно, но я уверен, что из-за него работает какое-то программное обеспечение, которое иначе не сработало бы.
Вы можете попробовать скопировать mstsc.exe из 32-битной установки на свой 64-битный компьютер и запустить его, но, насколько я знаю, в 64-битных окнах есть только 64-битный exe для mstsc, и поэтому его нельзя принудительно запустить в 32-битном режиме.
Используйте приведенный ниже сценарий как файл .bat, чтобы принудительно запустить mstsc.exe x32.
@echo off
set WinDir=
start C:\Windows\SysWow64\mstsc.exe
Вы пробовали скопировать 32-разрядный исполняемый файл из существующей 32-разрядной установки и запустить его?
Вы пробовали режим совместимости, пробуя старую операционную систему? Я думаю, что система просматривает манифест исполняемого файла, и если он был разработан для Vista, она не будет отображать эту вкладку. Но я думаю, вы могли бы отредактировать манифест.
Мой ответ: Является есть 32-битная версия mstsc.exe? Я предполагаю, что mstsc, поставляемый с 64-битной Windows, является 64-битной версией mstsc.
Настоящий ответ таков: Если вы хотите написать расширение dll для 64-битного приложения, вы должны перекомпилировать вашу dll как 64-битную. Microsoft не обязана и не обязана поставлять 32-разрядные версии всех компонентов операционной системы.
Другой пример: если вы хотите написать расширение оболочки для 64-битного проводника Windows, это должна быть 64-битная dll. 32-разрядной версии Windows Explorer не существует. Вы либо поддерживаете 64-битную Windows, либо нет.