Win2003 服务器中多字符串注册表字段中的垃圾字符
junk character in multi string registry field in win2003 server
我已经编写了代码来读取和写入注册表,该注册表在除win2003之外的所有操作系统中都可以正常工作。基本上在注册表(RegSetValueExW)中设置值后,我能够正确读取它(RegQueryValueExW)。但是当我打开注册表编辑器时,我看到其中有一些垃圾字符。
打开方式
RegOpenKeyExW(HKEY_LOCAL_MACHINE, subKey , 0, KEY_WRITE | KEY_WOW64_64KEY, &_regKey);
要设置:(值为 wstring)
::RegSetValueExW(_regKey, key, NULL, REG_MULTI_SZ, reinterpret_cast<const BYTE*>(value.c_str()), static_cast<DWORD>(value.length()*2 + 1));
对于查询:
::RegQueryValueExW(regKey, key, NULL, &type, reinterpret_cast<LPBYTE>(&value[0]), &valueLength);
从 MSDN 手册页 RegSetValueExW
:
对于 REG_MULTI_SZ 数据类型,字符串必须以两个空字符结尾。
您需要构造一个包含两个终止符字符的 BYTE
数组并将其传递给函数。
你应该使用(value.length() + 1)*2
而不是value.length()*2 + 1
。
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 如何为结构字段动态分配字符空间
- 位字段的大小与字符的比较
- 如何创建具有4个字段和每个字段9个字符长度的矢量对象
- 动态字符字段一次读取一个字符
- cURL post字段是用特殊字符编码的
- 如何从C++中字段由'|'字符分隔的行中提取数据?