DeleteSubKey предыдущей версии приложения /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);
}  

но у меня проблемы с уточнением.

Плюс было бы неплохо, чтобы он запускался только один раз, а не при каждом запуске.

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);
   }       
}
Другие вопросы по тегам