0

レジストリにDWORDを書き込もうとしていますが、次のようになります。

 WSTR keyvalue,"0"

       invoke RegCreateKeyExW,HKEY_LOCAL_MACHINE,offset keylocation,NULL,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,offset hIDKey,NULL 
      .IF eax==ERROR_SUCCESS
        invoke lstrlenW,offset keyvalue
        add eax,eax
        add eax,2
        invoke RegSetValueExW,hIDKey,offset keyname,NULL,REG_DWORD,offset keyvalue,eax 
        invoke RegFlushKey,hIDKey
        .ENDIF 

keyvalueは0なので、キーのレジストリに0が必要ですが、代わりに「38」と書き込まれます。私は何を間違っているのですか?

4

1 に答える 1

1

文字0は0x38であり、幅の広い文字列WSTR keyvalue)を予約しているため、これは予期されたものです。dword値0が必要です(サイズは固定されているため、必要ありません_wcslen)。何かのようなもの:

keyvalue DD 0
....
mov eax,4
....
于 2013-01-30T13:28:58.033 に答える