gpt4 book ai didi

c++ - RegSetValueEx 只显示写入第一个字符

转载 作者:太空狗 更新时间:2023-10-29 19:58:23 29 4
gpt4 key购买 nike

在下面的代码中,RegSetValueEx 只写了我的字符串的第一个字母。我试过将大小更改为我能想到的任何大小,但我只得到了第一个字符串。感谢您的帮助。

LPCWSTR path = L"Test String";
size_t size = wclsen(path) * sizeof(wchar_t);

DWORD dwResult = RegSetValueEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\My App",
0,
REG_SZ,
(LPBYTE)path,
test);

我尝试过使用 path.size() * sizeof(wchar_t) 和我能想到的任何其他大小,但似乎没有任何效果。有什么想法吗?

最佳答案

RegSetValueEx() 期望 REG_SZ 数据作为 const TCHAR* 提供,在您的情况下是 const CHAR* 根据您的编译器设置 - 您可以将 char* 传递给第二个参数这一事实证明了这一点,这意味着您实际上是在调用 RegSetValueExA() .由于您向 RegSetValueExA() 提供了 const WCHAR*,因此第一个 0x00 字节被解释为空终止符,因此只有一个字符值被写入。

您的选择是:

  1. RegSetValueExW(..., (const BYTE*) 路径, ...

  2. CString sPath(路径); RegSetValueEx(..., (const BYTE*) (LPCTSTR) sPath, ...

  3. 将项目设置切换为 Unicode 构建

关于c++ - RegSetValueEx 只显示写入第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026462/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com