在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
语句中。