繁体   English   中英

读取C#中的注册表项

[英]Read registry key in C#

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

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}

为什么会发生? 即缺少下划线?

另外,读完钥匙后,我是否必须关闭钥匙或其他物品? 我该怎么做?

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

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

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

至于管理密钥的寿命,密钥由未管理的资源支持。 即Windows HKEY RegistryKey类实现IDisposable ,因此您应将密钥包装在using语句中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM