Иногда необходимо изменить настройки реестра Windows во время установки приложения. Недавно я был разочарован приложениями, которые не восстанавливают эти настройки при их удалении. Как я уже думал об этом, мне приходит в голову, что не может быть хорошего (или действительного) способа сохранить и восстановить настройки реестра. Возьмите следующую последовательность событий, например:
- Приложение А владеет действием Открыть для расширения файла
.abc
.
- Приложение B установлено и захватывает действие Открыть для расширения файла
.abc
.
- Приложение А удалено.
- Приложение B удалено.
На шаге 3, если Приложение A достаточно умен, оно обнаружит, что оно больше не владеет действием Open, и поэтому пропустит любую попытку его восстановления.
На шаге 4, может ли какое-либо действительное действие, которое может предпринять Приложение B?
- Бездействие оставляет действие Open, указывающее на удаленный исполняемый файл.
- Восстановление указателя на Приложение A также является удаленным исполняемым файлом.
- Запрашивать у пользователя запрещено, поскольку это обычно считается за пределами технических навыков обычного пользователя. Если вы не согласны, замените другое изменение реестра в шагах 1 и 2, которое, по вашему мнению, будет выходить за рамки ответа пользователя.
- Удаление действия также потребует от пользователя принять неинформированное решение позднее или сделать какую-либо функцию недоступной для пользователя.
Это только одна из многих плохих ситуаций, которые я могу себе представить, когда не существует очевидного единственного «правильного» решения. Мой следующий проект потребует изменений в реестре во время установки, и я хотел бы знать, как лучше или рекомендуется для удаления. К сожалению, меня сгорели плохие практики удаления в текущих коммерческих пакетах, поэтому я знаю, что здесь нет единого мнения о наилучшей практике, и это либо большая работа, чтобы сделать это правильно, либо недостаток дизайна в реестре или оба.
Это очень реальная проблема для меня. Я отмечаю это субъективно, потому что я не уверен, что есть какой-то универсальный правильный ответ на этот вопрос. Пожалуйста, не стесняйтесь не соглашаться.