我需要将一个数组写入BINARY注册表项。
数组包含一系列字符......
char 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);
在文本文件中,我看到用户名和密码的值
as
字段ID 2:[zk8orq1]
字段ID 3:[P @ ssword2]
成功开启钥匙。
写入Registry时出错。
成功关闭密钥。
我缺少什么?
谢谢
答案 0 :(得分:2)
我可以看到的一件事是你要使用UCHAR byteRegArray
,而不是char
,
UCHAR byteRegArray[] = {0x01, 0x00....... };
RegSetValueEx(hKey, "sflaksdfl;asjdf", 0, REG_BINARY, (BYTE *)byteRegArray, sizeof(byteRegArray));
您还需要检查错误消息是什么,而不仅仅是与ERROR_SUCCESS比较,我相信还有更具体的ERROR代码。