[英]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.