.NET直接在属性中获取和设置RegistryKey值

时间:2011-02-25 16:28:32

标签: c# properties registry

我正在获取并直接在属性中设置一个registrykey的值。该密钥在程序启动时打开,在退出时关闭。

    public bool AlwaysSyncBeforeRun
    {
        get{ return Convert.ToBoolean(MayaRegistryKey.GetValue("AlwaysSyncBeforeRun")); }
        set { MayaRegistryKey.SetValue("AlwaysSyncBeforeRun", value); }
    }

此属性不适合频繁使用。

这是个好主意吗?

3 个答案:

答案 0 :(得分:2)

我不认为这是一个好主意,因为使用您的类的开发人员可能不知道该属性内发生的事情,并且注册表访问具有安全隐患。如果使用您的类的应用程序没有注册表访问权限,那么对该属性的简单获取将导致异常。

对于这种情况,我最好使用该属性将值存储在内存中,并提供一些Load()方法来填充属性,并提供一个Save()方法,只要应用程序准备好保存到注册表就可以调用它。 / p>

.NET Framework设计指南中的此链接可能会提供其他上下文:Choosing Between Properties and Methods

答案 1 :(得分:1)

如果不是经常使用,为什么要保持开放?

你这样做可以提高性能。但是,在您的情况下,您不经常使用它。所以,我建议你可以打开键,读/写值并关闭它。这将是安全的。

答案 2 :(得分:0)

很多人都说你不应该在房产中拥有任何功能。

您是否尝试过编辑注册表项,而程序的引用是打开的?我没试过,但是如果你的应用程序在其运行的持续时间内锁定密钥,那么最好是读取密钥,存储它并在最后更新它。