Вот помню в свое время я намучился с этим:
Code
proc AnalizedUserFolders
locals
temp_buffer dd ?
len_buf dd 100h
type dd REG_SZ
endl
invoke VirtualAlloc, 0, 200h, MEM_COMMIT, PAGE_READWRITE
mov [temp_buffer], eax
.test_usf:
invoke RegOpenKeyEx, HKEY_CURRENT_USER, _reg_usf, 0, KEY_ALL_ACCESS, hKey
cmp eax, ERROR_SUCCESS
jne .free
lea esi, [type]
lea edi, [len_buf]
invoke RegQueryValueEx, [hKey], _sub_usf_key, 0, esi, [folder.user], edi
cmp eax, ERROR_SUCCESS
jne .test_sf
invoke RegCloseKey, [hKey]
jmp .verify
.test_sf:
invoke RegOpenKeyEx, HKEY_CURRENT_USER, _reg_sf, 0, KEY_ALL_ACCESS, hKey
cmp eax, ERROR_SUCCESS
jne .free
lea esi, [type]
lea edi, [len_buf]
invoke RegQueryValueEx, [hKey], _sub_usf_key, 0, esi, [folder.user], edi
cmp eax, ERROR_SUCCESS
jne .test_sf
invoke RegCloseKey, [hKey]
.verify:
invoke lstrcpy,[temp_buffer], [folder.user]
stdcall FindFileRecursive, [temp_buffer], StatupFindFileProc, TRUE
.free:
invoke VirtualFree, [temp_buffer], 200h, MEM_RELEASE
ret
endp
Посмотри кусок кода, правда тут получение, а не запись, могу чуть позже написать исходник...