RegSetValueEx 仅显示写入第一个字符
RegSetValueEx Only shows writes first character
在下面的代码中,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
字节被解释为空终止符,因此只写入单个字符值。
您的选择是:
-
RegSetValueExW(..., (const BYTE*) path, ...
-
CString sPath(path); RegSetValueEx(..., (const BYTE*) (LPCTSTR) sPath, ...
-
将项目设置切换到 Unicode 生成
听起来你在编译之前没有定义UNICODE
/_UNICODE
,所以宽字符串中的零字节被解释为表示字符串的结束。
尝试改用RegSetValueExW
(和L"SOFTWARE\My App"
)。
相关文章:
- 如何忽略第一个字符输入后的所有内容
- 增量生成 - 错误:字符串的第一个字符应'0'或'1'
- 对c++中的输入使用getline函数时忽略第一个字符
- C++如何通过忽略每行的第一个字符来读取 unicode 文件
- 输入文件中的第一个字符是输出文件中的最后一个字符,反之亦然
- 检索字符串的第一个字符,并在C++中按字母顺序进行比较
- 这个RLE解码功能只解码第一个字符,我做错了什么?
- 如何忽略除第一个字符之外的所有字符
- C++ 如何从用户输入中读取第一个字符并忽略 rest(字符类型)
- CIN.IGNORE删除第一个字符的第二次函数被调用
- 使用CTYPES将字符串从Python传递到C - 仅发送第一个字符
- 为什么在使用循环时忽略输入的第一个字符
- 仅将输入的第一个字符用于 char 变量
- getline删除第一个字符;删除cin.ignore();无法解决
- 仅分配第一个字符,将 LPCTSTR 转换为字符*
- 如何获取指向字符数组中第一个字符的常量指针
- 访问没有字符的字符串的第一个字符
- 如何将 char 类型数组传递给函数并将第一个字符数组复制到第二个图表数组并使用 c++ 进行比较
- 文本文件中的第一个字符会导致 .substr() 错误
- RegSetValueEx 仅显示写入第一个字符