Как мой процесс удаления может должным образом справиться с восстановлением записей реестра?

StackOverflow https://stackoverflow.com/questions/402017

  •  03-07-2019
  •  | 
  •  

Вопрос

Иногда бывает необходимо изменить настройки реестра Windows во время установки приложения.Недавно я был разочарован приложениями, которые не восстанавливают эти настройки при удалении.Когда я больше думал об этом, мне пришло в голову, что, возможно, не существует хорошего (или допустимого) способа сохранения и восстановления настроек реестра.Возьмем, к примеру, следующую последовательность событий:

  1. Приложению A принадлежит действие "Открыть" для расширения файла .abc.
  2. Установлено приложение B, которое перехватывает действие открытия для расширения файла .abc.
  3. Приложение A удалено.
  4. Приложение B удалено.

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

На шаге 4, есть ли какие-либо допустимые действия, которые может предпринять приложение B?

  • Бездействие оставляет действие Open, указывающее на удаленный исполняемый файл.
  • Восстановление указателя на приложение A также является удаленным исполняемым файлом.
  • Задавать вопросы пользователю не разрешается, поскольку обычно считается, что это выходит далеко за рамки технических навыков обычного пользователя.Если вы не согласны, замените шаги 1 и 2 другим изменением реестра, на которое, по вашему мнению, пользователь не сможет ответить.
  • Удаление действия также потребует от пользователя принятия неосведомленного решения позже, или же сделает какую-либо функцию недоступной для пользователя.

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

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

Это было полезно?

Решение

Если вы пишете приложение B, то я бы сказал, что в первую очередь не следует перехватывать действие Открытия для расширения .abc.Во время установки спросите пользователя, хочет ли он связать файлы .abc с вашей программой.Во время удаления проверьте, по-прежнему ли связана ваша программа.Если это так, отключите расширение файла, в противном случае оставьте его в покое.

Если есть другое приложение, которое хочет по-прежнему ассоциироваться с файлами .abc после удаления B, жестко заставьте пользователя исправить это.В конце концов, он согласился связать файлы .abc с вашим приложением, а затем удалил ваше приложение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top