C ++-从注册表读取值中获取空值

完整的adnan

我的应用程序正确读取和写入注册表。现在,我需要从以下位置读取注册表值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid

这是我的代码:

bool GetWindowsID(string &winID)
{
    HKEY hKey = 0, hKeyType = HKEY_LOCAL_MACHINE;
    bool status = false;
    DWORD dwType = 0;
    DWORD dwBufSize = 256;
    char value[256] = "\0";
    if (RegOpenKeyEx(hKeyType, L"SOFTWARE\\Microsoft\\Cryptography", NULL, KEY_QUERY_VALUE|KEY_WOW64_64KEY, &hKey) == ERROR_SUCCESS)
    {
        dwType = REG_SZ;
        if (RegQueryValueEx(hKey, L"MachineGuid", NULL, &dwType, (LPBYTE)value, &dwBufSize) == ERROR_SUCCESS)
            status = true;
        RegCloseKey(hKey);
    }
    winID.assign(value);
    return status;
}

在每个字符后得到数组中guidbut,但是value它们是一个“ \ 0”值,这是因为只有数组的第一个字符才分配给字符串。这太奇怪了!

在此处输入图片说明

戴维·赫弗南

您已经建立了针对Unicode的目标,因此注册表API返回了UTF-16 Unicode文本。请记住,每个元素的宽度为2个字节而不是char使用wchar_twchar_t

还要确保按照文档中的说明,说明返回的字符串不是以空值结尾的。您必须考虑中返回的值dwBufSize

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从注册表C#读取值

来自分类Dev

从注册表C#读取值

来自分类Dev

在C中更改注册表值

来自分类Dev

遍历注册表并获取所有子项和C#中RegistryKey中的值

来自分类Dev

C#如何从注册表中读取MultiString

来自分类Dev

C#获取注册表子项的值

来自分类Dev

在C#中删除单个注册表值

来自分类Dev

从注册表C#获取参数

来自分类Dev

无法读取C ++中的注册表项

来自分类Dev

无法读取C ++中的注册表项

来自分类Dev

无法在C#中使用PowerShell读取注册表值

来自分类Dev

如何读取注册表项的值C#

来自分类Dev

不使用CLSID和C中的注册表获取COM对象的DLL文件

来自分类Dev

试图在注册表中创建一个值-C ++-RegSetValueEx

来自分类Dev

使用C#测试注册表中是否存在DWORD值

来自分类Dev

C#winApi-获取注册表的最后写入日期

来自分类Dev

C ++没有将值插入注册表

来自分类Dev

c#仅在注册表值名称已存在的情况下设置新的注册表值

来自分类Dev

列出和删除C#中的注册表子项

来自分类Dev

从 C# 读取注册表项

来自分类Dev

如何在 C++ 中实现“注册表模式”,使用单个注册表实现多个接口

来自分类Dev

使用服务时C ++读取注册表失败,但在控制台中成功

来自分类Dev

C#读取注册表项/值,项始终为NULL

来自分类Dev

C#写入注册表

来自分类Dev

JS:读取JavaScript中的注册表值

来自分类Dev

如何在另一台计算机上连接到注册表并在c#中读取数据

来自分类Dev

读取注册表值32位?

来自分类Dev

从注册表中的DWORD获取十进制值

来自分类Dev

在C ++中枚举HKEY_LOCAL_MACHINE \ SOFTWARE中的注册表子项