1

アプリを実行しているPCがx64かx86かを判断しようとしています。

これが私の現在のコードです:

format PE GUI 4.0
include "Win32A.Inc"


entry start


section ".idata" import data readable writable

        library kernel32,"KERNEL32.DLL",user32,"USER32.DLL"

        import  kernel32,\
                IsWow64Process,"IsWow64Process",\
                GetCurrentProcess,"GetCurrentProcess",\
                ExitProcess,"ExitProcess"

        import  user32,\
                MessageBox,"MessageBoxA"

section '.data' data readable writeable

hProcess        dd ?
hResult         dd ?

section '.code' code readable executable

start:

        invoke     GetCurrentProcess
        mov        [hProcess],eax
        invoke     IsWow64Process,hProcess,hResult
        cmp        [hResult],1
        je         Is64
        cmp        [hResult],0
        je         Is32
        invoke     ExitProcess,0

Is64:

            invoke       MessageBox,0,'64','AR',0
            invoke       ExitProcess,0
Is32:

            invoke       MessageBox,0,'32','AR',0
            invoke       ExitProcess,0 

実行時にクラッシュするだけです。

ブール値をチェックする適切な方法は何ですか、その部分を正しく実行していますか?

この問題の解決にご協力いただきありがとうございます。

4

1 に答える 1

1

インライン文字列を宣言できるようにするには、拡張ヘッダーを含める必要があります。

include "Win32AX.Inc"

または、「64」などは定数として解釈されます。

また、hProcessを値として渡していない:

invoke     IsWow64Process,[hProcess],hResult
于 2012-10-16T15:01:46.227 に答える