2013-10-03 55 views
0

我需要將數組寫入BINARY註冊表項。C++將數組寫入註冊表中的二進制條目

該數組包含一系列字符...

炭ArrayUserName [100]它裝入的ZK8ORQ1

我需要該值寫入二進制值( REG_BINARY)在註冊表中。

void WriteRegistryValues() 
{ 
DWORD dwDisposition; 
FILE *fileb; 
fileb = fopen("C:\\logs\\cplog2.txt", "a+"); 

fprintf(fileb,"Field ID %d: [%s]\n", 2, ArrayUserName); 
fprintf(fileb,"Field ID %d: [%s]\n", 3, ArrayPassword); 

HKEY hKey; 
LPCTSTR sk = TEXT("SOFTWARE\\XXXX\\YYYY\\GINA"); 
LONG openRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sk, 0, KEY_ALL_ACCESS , &hKey); 


if (openRes==ERROR_SUCCESS) { 
    fprintf(fileb, "Success opening key.\n"); 
} else { 
    fprintf(fileb, "Error opening key.\n"); 
} 

LPCTSTR value = TEXT("Domain"); 
LONG setRes = RegSetValueEx(hKey, value, 0, REG_BINARY, (CONST BYTE*)ArrayUserName, 100); 


if (setRes == ERROR_SUCCESS) { 
    fprintf(fileb, "Success writing to Registry.\n"); 
} else { 
    fprintf(fileb, "Error writing to Registry.\n"); 
} 

LONG closeOut = RegCloseKey(hKey); 

if (closeOut == ERROR_SUCCESS) { 
    fprintf(fileb, "Success closing key.\n"); 
} else { 
    fprintf(fileb, "Error closing key.\n"); 
} 

fclose(fileb); 

在文本文件中,我看到的用戶名和密碼的值

作爲

字段ID 2:[zk8orq1]

字段ID 3:[P @ ssword2 ]

成功開啓的關鍵。

寫入註冊表時出錯。

成功結束鍵。

我在想什麼?

謝謝

回答

2

有一件事我可以看到的是,要使用UCHAR byteRegArray,而不是char

UCHAR byteRegArray[] = {0x01, 0x00....... }; 
RegSetValueEx(hKey, "sflaksdfl;asjdf", 0, REG_BINARY, (BYTE *)byteRegArray, sizeof(byteRegArray)); 

你還需要檢查錯誤信息是什麼,不只是比較ERROR_SUCCESS ,我相信有更具體的錯誤代碼。

+0

非常接近....謝謝....但它是寫滿100個地方到註冊表。我只用了8或100 ... – pithhelmet

+0

更新了我的答案。 –

+0

完美 - 謝謝你x100 – pithhelmet

相關問題