2010-11-29 2 views
5

필자가 작성한 프로그램 중 ml.exe를 사용하여 x86 용으로 어셈블 된 일부 프로그램은 Windows 7 x64에서 제대로 실행됩니다. 나는 이것이 와우 기술 때문이라고 생각합니다.x86 용으로 컴파일 된 일부 프로그램이 x64에서 실행되지 않는 이유는 무엇인가

그러나 실행하지 않는 일부 프로그램 (저에게 쓴 것이 아닙니다)이 있습니다. 그들은 오류를 제공합니다 : 이 파일의 버전은 실행중인 Windows 버전과 호환되지 않습니다. 컴퓨터 시스템 정보를 확인하여 x86 (32 비트) 또는 x64 (64 비트) 버전의 프로그램이 필요한지 확인한 다음 소프트웨어 게시자에게 문의하십시오.

EXE 파일을 수정할 수있는 방법이 있습니까? 이 프로그램은 Win 7 x64에서 실행됩니다. 이 프로그램의 근본적인 차이점은 투명하게 실행되는 다른 프로그램과 다른 점입니다.

+0

+1, 나도 알고 싶습니다 – Jacques

답변

6

실제로는 8 비트 또는 16 비트 프로그램입니다. Windows x64는 이러한 프로그램에 필요한 가상 8086 모드를 지원하지 않는 긴 모드로 실행됩니다. 소스에서 다시 컴파일하거나 가상 시스템에서 실행하기에 부족합니다.

+0

8 비트 프로그램 어? 나는 잠시 동안 그 중 하나를 보지 못했습니다 ...-) –

+0

사실 그것은 완전히 사실 일 수 없습니다. 여기를 참조하십시오 : http://social.answers.microsoft.com/Forums/en-US/w7programs/thread/8a8733ad-5532-41a7-9625-aba80ef51a11. –

+2

그 스레드에서 허용되는 대답은 전혀 대답이 아닙니다. –

0

하나의 이유는 .NET과 네이티브 라이브러리의 결합 일 수 있습니다. .NET 라이브러리는 런타임시 x64 (명시 적으로 x86을 지정하지 않은 경우)로 컴파일되고 기본 라이브러리는 x86 모드로 실행됩니다. 그것은 togehther를 달릴 수 없다.

또 다른 이유는 레지스트리에 대한 액세스입니다. 사용 된 API에 따라 wow64 모드의 x86app는 레지스트리의 다른 부분으로 전달 될 수 있습니다. 레지스트리 액세스 API가 일치하지 않으면 문제가 발생할 수 있습니다.

관련 문제