c++ - 在 C++ 中将字符串 (REG_SZ) 值写入注册表

标签 c++ registry

我有大部分用于向 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/

相关文章:

c++无法从另一个类主函数调用静态函数

c++ - 如果在获得互斥锁后发生中断会怎样

windows - 如何从 Windows XP 的上下文菜单中更改 "Edit"和 "Print"操作的默认应用程序?

c++ - 使用 C++ 更改 qml 文件中文本区域的文本

c++ - OpenCV 像素强度

windows - 需要有关如何使用 InstallShield 2010 将我的应用程序文件扩展名与应用程序相关联的信息

winapi - 以编程方式关闭 Windows 虚拟触摸板/触控板

windows - 如何使用应用程序的虚拟化注册表创建 'sandbox'?

python - Windows 没有将命令行参数传递给从 shell 执行的 Python 程序

c++ - 使用变换翻转 map ,收到错误 "type int unexpected"