我的一般意图是在关闭应用程序之前关闭所有打开的RegistryKey
。也就是说,无需为每个特定键添加key.Close()。我还想避免使用打开的密钥填充list<>
,因为我认为可能是另一种解决方案。
我正在寻找一种迭代,它会以我的形式获取所有RegistryKeys,然后用某种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<>
或每行一键的方法?我的假设是错的吗?
关闭应用程序上所有注册表项的正确方法是什么?