DeleteSubKey of previous Application Version/s C#

DeleteSubKey of previous Application Version/s C#

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

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

设置写入注册表为:

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

在上面的代码中,我故意删除了公司和产品信息,我的应用程序当前的版本是 1.0.20.0,所以在应用程序启动时,DeleteSubKey 行是 运行 并且每次应用程序是 运行.

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

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

但我无法充实它。

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

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

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