Безопасный режим (Safe Mode) в системах Windows является одним из базовых инструментов, позволяющих восстановить работоспособность системы. Одним из существенных недостатков безопасного режима – невозможность установки / деинсталляции программ из msi-пакетов. Это ограничение вызвано тем, что разработчики посчитали службу Windows Installer (установщик Window) потенциально небезопасной, и решили отменить старт этой службы при загрузке системы в безопасном режиме. Что в некоторых случаях крайне неудобно.
Большинство современных приложений для свой корректной установки / удаления пользуются услугами службы Windows Installer, и если она недоступна, их установка или удаление невозможно. Допустим, что для восстановления работоспособности системы, необходимо в безопасном режиме удалить некое приложение, мешающее нормальной загрузке системы (например, антивирус). При попытке запустить стандартный деинсталятор с целью удалить приложение, система сообщает:
Вручную запустить службу Windows Installer в Safe Mode также не получится (Services -> Windows Installer -> Start):
Windows could not start the Windows Installer service on Local Computer. Error 1084: This service cannot be started in Safe Mode
Однако существует небольшой трюк, позволяющий запустить службу Windows Installer в безопасном режиме и корректно деинсталлировать ПО.
Чтобы включить службу Windows installer в Safe Mode:
- Откройте редактор реестра и перейдите в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal (если система запущена в обычном Safe Mode) или раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network (если используется безопасный режим с поддержкой командной строки)
- Создайте новый раздел с именем MSIServer
- В новом разделе автоматически появится новый параметр с именем Default. Задайте ему значение Service.Примечание: эти операции можно заменить одной командой:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\MSIServer" /VE /T REG_SZ /F /D "Service"
- Теперь службу Windows Installer можно запустить через панель управления службами (Services) или из командной строки:
net start msiserver
После запуска службы MSIServer возможно непосредственно в безопасном режиме удалять/устанавливать любое приложение с msi-установщиком.