我正在尝试将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”。我做错了什么?
答案 0 :(得分:1)
字符0是0x38,你保留一个宽字符串(WSTR keyvalue
),所以它是预期的。您需要dword值0(具有固定大小,因此您不需要_wcslen
)。类似的东西:
keyvalue DD 0
....
mov eax,4
....