在 C# 中读取注册表项

2024-04-23

我正在读取注册表项的值:

Microsoft.Win32.RegistryKey key;
key = *someLongPathHere*;

并将值显示到标签:

string a = (string)key.GetValue("");//a default value
label1.Text = a;

它显示:

{F241C880-6982-4CE5-8CF7-7085BA96DA5A}

除了原始值中存在的第一个下划线之外,这基本上是正确的:

{_F241C880-6982-4CE5-8CF7-7085BA96DA5A}

为什么会发生这种情况?即缺少的下划线?

另外,读取密钥后,我是否必须关闭密钥或其他什么?我该怎么做?


测试包含下划线的字符串值是否存在系统问题非常容易。您可以简单地在注册表编辑器中创建这样的值,然后使用以下命令将其读入您的 C# 程序GetValue()。当您这样做时,您会发现 C# 注册表代码不会丢失下划线。因此,您的问题必须有其他解释。

我最好的猜测是您的标签组件不显示下划线。我对 C# UI 框架不是很熟悉,但这似乎是合理的。尝试查看以下值a在调试器下而不是在 UI 上的标签标题中。

我想到的另一件事是您有注册表重定向,因为您有一个在 x64 上运行的 x86 进程,并且您的密钥位于重定向密钥(例如 HKLM\Software)下。也许如果您查看 Wow6432Node,您会看到下划线差异。

至于管理密钥的生命周期,密钥由非托管资源支持。即一个WindowsHKEY. The RegistryKey类工具IDisposable所以你应该把你的钥匙包在一个using陈述。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中读取注册表项 的相关文章