所以,我在C ++中将字符串转换为字节,但是当它将它添加到注册表中时,它会剥离exe部分但保留。我不知道它有什么问题。
如果你想知道NXS是什么,它的值是“noerrorsplease.exe”,类型是char。
char szFinal[] = "";
strcat(szFinal, (const char *)ExtractDirectory(filepath).c_str());
//Not needed: strcat(szFinal, "");
strcat(szFinal, nxs);
strcat(szFinal, ".exe");
CString str;
str = szFinal;
str += ".exe";
cout << str.GetString() << endl;
const BYTE* pb = reinterpret_cast<const BYTE*>(str.GetString());
cout << pb << endl;
DWORD pathLenInBytes = *szFinal * sizeof(*szFinal);
if(RegSetValueEx(newValue, TEXT("Printing Device"), 0, REG_SZ, (LPBYTE)pb, pathLenInBytes) != ERROR_SUCCESS)
{
RegCloseKey(newValue);
cout << "error" << endl;
}
cout << "Possibly worked." << endl;
RegCloseKey(newValue);
答案 0 :(得分:2)
此代码
char szFinal[] = "";
strcat(szFinal, (const char *)ExtractDirectory(filepath).c_str());
已经无效。您定义了只有一个字符为终止零的数组szFina。你不能用它来复制任何字符串。在这些情况下,您应该使用std :: string类型的对象。