0

我的总体意图是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<>或每键一行的方法?我的假设是错误的吗?

关闭应用程序上所有注册表项的正确方法是什么?

4

0 回答 0