【问题标题】:DeleteSubKey of previous Application Version/s C#DeleteSubKey 以前的应用程序版本/s C#
【发布时间】:2018-06-28 14:11:19
【问题描述】:

我的应用程序将用户设置写入注册表以便于检索,但这有点让人头疼,因为它是将它们写入为特定于版本的。

所以每次我更新我的应用程序时,它都会创建一个与新版本号相关的新子项。

设置写入注册表为:

Application.UserAppDataRegistry.SetValue

我想找到一种简单的方法来删除所有与当前应用程序版本不匹配的 VERSION 子键。

目前,由于我的应用程序相对较新,我采用了这个方法,它确实有效,但相当不整洁:

Registry.CurrentUser.DeleteSubKey("SOFTWARE\\COMPANY\\PRODUCT\\1.0.0.0", false);

Registry.CurrentUser.DeleteSubKey("SOFTWARE\\COMPANY\\PRODUCT\\1.0.10.0", false);

在上面的代码中,我故意删除了 COMPANY & PRODUCT 信息,并且我的应用程序当前版本为 1.0.20.0,因此在应用程序启动时,DeleteSubKey 行会运行,并且每次运行应用程序时都会运行。

我在想一些类似使用的东西:

If(PreviousVersion != Application.ProductVersion)
{
Registry.CurrentUser.DeleteSubKey(PreviousVersion);
}  

但我无法充实这一点。

另外,最好让它只运行一次,而不是在每次启动时运行。

【问题讨论】:

    标签: c# registry registrykey


    【解决方案1】:

    您可以列出子键并检查它们是否与当前版本不同:

    RegistryKey rk = Registry.CurrentUser.OpenSubKey("SOFTWARE\\COMPANY\\PRODUCT");
    var keys = rk.GetSubKeyNames();
    
    foreach (string s in keys)
    {
       if (s != "Current_verion_number")
       {
          Registry.CurrentUser.DeleteSubKeyTree("SOFTWARE\\COMPANY\\PRODUCT\\" + s);
       }       
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 2012-03-03
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多