문제

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과 다른 프로세스를 실행하는 유사한 문제가있을 수 있습니다 (프로세스 소스 디렉토리가 중요 할 때마다) ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top