先前的应用程序版本C#的DeleteSubKey

时间:2018-06-28 14:11:20

标签: c# registry registrykey

我的应用程序将用户设置写到注册表中以便于检索,但这会引起一些麻烦,因为它是将它们写为特定于版本的。

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

将设置写入注册表:

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);
}  

但是我很难将其充实。

另外,最好只运行一次而不是每次启动都运行。

1 个答案:

答案 0 :(得分: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);
   }       
}