Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как 32-разрядный cmd.exe может запустить 64-разрядный cmd.exe в Windows Server 2003 x64?

Автор вопроса: Minus ExОтветов: 1

Это продолжение разрешений на выполнение 7-Zip в 64-разрядной версии Windows Server 2008.

Я пытаюсь избежать слишком сложного процесса сборки для создания нескольких EXE-файлов 7-Zip. Мне просто нужен .cmd, чтобы запустить мой Java-процесс после прочтения некоторых 64-битных записей реестра. Однако для успешного использования одного EXE-файла он должен быть 32-битным.

В приведенном выше вопросе обнаружен трюк, позволяющий заставить Windows Server 2008 обнаружить 32-разрядный cmd.exe и заменить его на 64-разрядный. Есть ли способ сделать это в Windows Server 2003? Есть исправление Windows, которое позволяет reg.exe получать доступ к 64-битным записям в 32-битном режиме, но я не могу быть уверен, что это на сервере клиента, поэтому обходной путь не подходит.

cmdwindows32bit-64bit

Ответы

Ответ 1 · рейтинг 16 · MBu

Чтобы запустить 64-разрядный cmd.exe из 32-разрядного cmd.exe, у вас должен быть доступ к папке c:\Windows\System32 без перенаправления в папку c:\Windows\SysWow64. В Win2008 этого можно добиться, открыв путь c:\Windows\Sysnative. К сожалению, для Win2003 требуется исправление (см. http://support.microsoft.com/kb/942589).

Существует обходной путь - вы можете создать точку соединения NTFS, которая направляет в папку c:\Windows\System32, и использовать путь к этой точке соединения вместо c:\Windows\System32. Используя junction.exe из System Internals, мне удалось создать такую ​​точку соединения из 32-битного cmd.exe и запустите 64-битный cmd.exe.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы