我的总体意图是RegistryKey
在关闭应用程序之前关闭所有 open 。也就是说,无需为每个特定键添加 key.Close()。我还想避免list<>
用打开的键填充 a,因为我认为这可能是另一种解决方案。
我一直在寻找一种迭代,它可以让我在我的表单中获得所有 RegistryKey,然后用某种 foreach 循环关闭它们。
经过大量搜索(我的意思是,这一整天,我觉得这已经太多了,如果你知道如何,我觉得它非常简单)并阅读了很多关于句柄、字段、属性和成员的信息,我已经得出这些结论...
1-Registrykey key1 = Registry.CurrentUser.CreateSubKey(@"Path")
是现场成员。(我什至不确定它是什么。)
2-它是私人的,因为我没有另外指定。
在那之后,我想我可能会做类似的事情
foreach (FieldInfo current in this.GetType().GetFields(
BindingFlags.Instance |
BindingFlags.NonPublic |
BindingFlags.DeclaredOnly))
{
if (current.FieldType == typeof(RegistryKey))
{
RegistryKey key = (RegistryKey)current.GetValue(this);
key.Close();
}
}
但我很确定我没有关闭已经打开的钥匙......只是打开和关闭一个新的......然后再一次。我可能(很有可能)是错的。
我的问题很明确:我正在尝试做的事情是可行的,还是应该退回到list<>
或每键一行的方法?我的假设是错误的吗?
关闭应用程序上所有注册表项的正确方法是什么?