DeleteSubKey предыдущей версии приложения / s C # - PullRequest
0 голосов
/ 28 июня 2018

Мое приложение записывает пользовательские настройки в реестр для облегчения поиска, но это вызывает небольшую головную боль, потому что оно записывает их в зависимости от версии.

Таким образом, каждый раз, когда я обновляю свое приложение, оно создает новый подраздел, связанный с новым номером версии.

Настройки записываются в реестр как:

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 Ответ

0 голосов
/ 28 июня 2018

Вы можете перечислить подключи и проверить, отличаются ли они от текущей версии:

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);
   }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...