找不到命名空间“Microsoft.Win32”

问题描述 投票:0回答:1

我正在运行最新版本的 Visual Studio C++ 桌面以及最新的 v4.8.04084 版本的 .NET Framework,并且在头文件中我有 #include ,后面跟着“using Microsoft.Win32”。这里“Microsoft”带有红色波浪下划线。如果没有 Microsoft 前缀,“Win32”也会显示红色波浪线。 “标识符“Microsoft”未定义,等等

显然,Visual Studio 找不到这两个定义的位置。请注意,“Windows.h”显示在项目的“外部依赖项”列表中。那么,缺失的标识符似乎没有在 Windows.h 或 winreg.h 中定义,后者包含在 Windows.h 中。花了几天时间试图找到定义这些标识符的文件,我不知所措。

我的目标是能够编辑注册表中的值。有谁知道标识符“Microsoft”、“Win32”和“Microsoft.Win32”是在哪里定义的?

我在互联网上尝试了很多搜索来寻找这个问题的答案。 Chat GPT 说这些标识符应该在 winreg.h 中定义。没有这样的运气。

另外,Visual Studio 2017 也不走运。

c++ registry identifier .net-4.8
1个回答
0
投票

对于在 Windows 上使用 C++ 进行编程并希望在注册表中读取和写入值的任何其他人,这里是答案。正如有用的评论者所指出的,我们必须忽略有关 winreg.h 的 C# 和 .NET 信息。此资源在 C#/.NET 中与 C++ 中的 winreg.h 文件完全不同。前者可以定义 Microsoft.Win32 命名空间。后者则不然。

我能够使用 C 函数 RegOpenKeyExA(使用 KEY_QUERY_VALUE | KEY_SET_VALUE 作为 samDesired 参数值)、RegGetValueA、RegSetValueExA 和 RegCloseKey 读取和写入 HKEY_CURRENT_USER\Control Panel\International 子项中的时间格式注册表值,所有这些在 Visual Studio 2022 C++ 社区版本安装的 winreg.h 文件中声明。在使用这些函数时,必须严格遵守一些晦涩的类型名称,例如 HKEY、DWORD、LSTATUS 和 BYTE,并使用 malloc 和 free 函数分配和释放一些缓冲区空间。它有效。

https://learn.microsoft.com/en-us/windows/win32/api/winreg/ 上的 winreg.h 概述及其链接足以学习如何使用 C 函数。

© www.soinside.com 2019 - 2024. All rights reserved.