32 비트 프로세스에서 64 비트 프로세스를 시작하는 방법
-
18-09-2019 - |
문제
32 비트 .NET 응용 프로그램에서 64 비트 실행 가능 (java.exe)을 실행하려고합니다. 나는 사용 중입니다 Process
수업과 호출 cmd /c <command name>
가능한 모든 명령을 지원하기 위해 (예 : dir
, cd
등).
문제는 내 컴퓨터에서 64 비트 버전의 JRE 및 JAVA.EXE를 설치 한 것입니다. C:\Windows\System32
폴더 (x64). 64 비트 버전을 시작하려고 시도했습니다 cmd.exe
전화로 C:\Windows\System32\cmd.exe
그러나 그것은 리디렉션됩니다 SysWOW64
호출 프로세스로 인해 32 비트입니다.
이것을 작동시키기 위해 내가 할 수있는 다른 일이 있습니까?
편집하다 전체 cmd /c
일은 약간의 붉은 청어입니다. 문제의 일부가 아니며 64 비트 실행 파이브를 실행할 수 있습니다.
해결책
Call to Process.Start에서 파일 시스템 리디렉션을 일시적으로 비활성화 할 수 있습니다. 와우 64disablewow64fsredirection 그리고 WOW64REVERTWOW64FSREDIPERECTION.
또 다른 옵션은 Windows Vista 이상에서 사용할 수있는 %windir % sysnative를 사용하는 것입니다.
다른 팁
당신이하는 일은 %windir % sysnative를 사용하여 64 비트 cmd.exe를 해결 한 다음 "/c"명령 줄 옵션을 통해 다른 64 비트 프로그램을 시작하는 것입니다.
c:\>set proc
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 70 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=4601
c:\>c:\windows\sysnative\cmd
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
c:\>set proc
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 70 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=4601
c:\>
도움이 될 수있는 경우를 대비하여 ..http://msdn.microsoft.com/en-us/library/aa384187(vs.85).aspx
응용 프로그램이 UAC 프롬프트를 표시하기 위해 나타나면 리디렉션이 발생하지 않습니다. 또한 일부 폴더는 리디렉션이 면제됩니다.
"sysnative"에는 몇 가지 단점이있는 것 같습니다.
예 : PowerShell.exe를 통해 시작할 때 C:\Windows\sysnative\WindowsPowerShell\v1.0\powershell.exe
일부 cmdlets가 좋아요 Get-AppxProvisionedPackage" and "Get-WindowsCapability
작동 / 던지기 예외 :
get-appxProvisionEdPackage : "오류 설정 현재 디렉토리"C : Windows sysnative Wind
(독일어로 번역 된 "Fehler Beim Festlegen des Aktuellen Verzeichnisses auf"c : windows sysnative wind ")
PowerShell과 다른 프로세스를 실행하는 유사한 문제가있을 수 있습니다 (프로세스 소스 디렉토리가 중요 할 때마다) ...