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 回答