Я читаю значение реестра следующим образом:
char mydata[2048];
DWORD dataLength = sizeof(mydata);
DWORD dwType = REG_SZ;
..... open key, etc
ReqQueryValueEx(hKey, keyName, 0, &dwType, (BYTE*)mydata, &dataLength);
Моя проблема в том, что после этого содержимое mydata выглядит следующим образом: [63, 00, 3A, 00, 5C, 00 ...], т.е. это выглядит как Unicode?!?!.
Мне нужно как-то преобразовать это в обычный массив символов без этих [00], так как они не справляются с простой функцией регистрации, которую я имею. То есть если я вызываю так: WriteMessage (mydata), он выводит только «c», который является первым символом в реестре. У меня есть повсюду вызовы этой функции ведения журнала, поэтому лучше не изменять ее, а как-то «исправить» значение реестра. Вот функция журнала:
void Logger::WriteMessage(const char *msg)
{
time_t now = time(0);
struct tm* tm = localtime(&now);
std::ofstream logFile;
logFile.open(filename, std::ios::out | std::ios::app);
if ( logFile.is_open() )
{
logFile << tm->tm_mon << '/' << tm->tm_mday << '/' << tm->tm_year << ' ';
logFile << tm->tm_hour << ':' << tm->tm_min << ':' << tm->tm_sec << "> ";
logFile << msg << "\n";
logFile.close();
}
}