Assembly MASM将DWORD写入注册表
我正在尝试向注册表写入DWORD,我喜欢这样:Assembly MASM将DWORD写入注册表,assembly,masm,masm32,Assembly,Masm,Masm32,我正在尝试向注册表写入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 keyv
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”。我做错了什么?字符0是0x38,您保留了一个宽字符串(
WSTR keyvalue
),因此这是意料之中的。您需要dword值0(其大小固定,因此不需要\u wcslen
)。比如:
keyvalue DD 0
....
mov eax,4
....