我有大部分用于向 Windows 注册表写入值的代码,但是当我将路径更改为我为测试而设置的虚拟键和值时,它会失败。我的代码如下:
HKEY hKey;
LPCTSTR sk = TEXT("SOFTWARE\TestSoftware");
LONG openRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sk, 0, KEY_ALL_ACCESS , &hKey);
if (openRes==ERROR_SUCCESS) {
printf("Success opening key.");
} else {
printf("Error opening key.");
}
LPCTSTR value = TEXT("TestSoftwareKey");
LPCTSTR data = "TestData\0";
LONG setRes = RegSetValueEx (hKey, value, 0, REG_SZ, (LPBYTE)data, strlen(data)+1);
if (setRes == ERROR_SUCCESS) {
printf("Success writing to Registry.");
} else {
printf("Error writing to Registry.");
}
LONG closeOut = RegCloseKey(hKey);
if (closeOut == ERROR_SUCCESS) {
printf("Success closing key.");
} else {
printf("Error closing key.");
}
所有三个测试都会产生错误状态。
让我感到困惑的是,当我将这段代码指向注册表的其他部分时,我能够运行它。有什么想法吗?
谢谢, 布莱恩
最佳答案
我觉得自己很傻。解决方法是需要正确转义字符串中的斜杠如下:
LPCTSTR sk = TEXT("SOFTWARE\\TestSoftware");
希望有人觉得这很有用...
关于c++ - 在 C++ 中将字符串 (REG_SZ) 值写入注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505024/