Удаление службы - PullRequest
       1

Удаление службы

2 голосов
/ 24 августа 2011

Я создал установщик и настраиваемые действия для службы.

При первой установке мне удалось установить службу, но когда я попытался запустить службу, я получил Ошибка: не удается запустить службу установщика Windows Ошибка 193: 0xc2

Я пытался удалить эту службу множеством способов, но при установке я все еще получаю сообщение об ошибке 1001 Указанная служба уже существует.

Я удалил службу непосредственно из реестра, но, похоже, это не сработало.

Я пытался sc delete [service] -> Указанная служба не существует как установленная служба.

Служба не отображается в реестре и не установлена ​​в установленных службах.

Буду признателен за любые другие мысли или варианты

Ответы [ 5 ]

2 голосов
/ 20 сентября 2012
sc.exe stop serviceName
sc.exe delete serviceName

и перезагрузите свою ВМ \ ПК

2 голосов
/ 24 августа 2011

Я использовал эти команды в bat-файле, который запускается каждый раз при переустановке. Попробуйте это и посмотрите.

set path=%path%;%SystemRoot%\Microsoft.NET\Framework\vXXX

InstallUtil /u YourService.exe

InstallUtil /i YourService.exe

net start "Service name"

Если вы хотите удалить / удалить / удалить службу Windows, возможно, оставленную из неполного установщика, вы можете использовать команду sc из командной строки администратора:

sc delete [имя_службы]

"sc delete" Удаляет подраздел службы из реестра. Если служба работает или если другой процесс имеет открытый дескриптор службы, служба помечается для удаления.

EDIT

Я пробовал sc delete [service] Указанная служба не существует как установленный сервис.

Возможно, перезапуск машины исправит это.

0 голосов
/ 24 августа 2011

Эта жалоба может исходить от установщика, а не от Windows.

У меня была такая же проблема ранее в этом году, я установил службу из файла MSI, который запутался где-то вдоль линии. Я удалил пакет и попытался переустановить через установщик и получил то же сообщение, что и вы, что служба уже существует. Разочарование. Он больше не отображался как установленный пакет и не отображался в списке служб.

В итоге файл MSI не был очищен должным образом при удалении, но я мог вручную манипулировать этой базой данных и самостоятельно удалять информацию, используя MSIZap.exe . Вам нужен Windows SDK , чтобы получить доступ к этой программе. Могут быть и другие пути, но я о них не знаю.

Вам потребуется guid пакета вашего установочного пакета, чтобы удалить его с помощью MSIZap. В том же каталоге, что и MsiZap.exe, вы найдете другое приложение, MsiDb.exe. Запустите его, укажите его в своем файле MSI, укажите в каком-нибудь пустом каталоге для сохранения некоторых экспортов, выберите таблицу «Свойства», установите переключатель «Экспорт» и нажмите кнопку «ОК». Откройте файл «Property.idk», созданный MsiDb.exe в любом текстовом редакторе. Найдите в своем тексте строку с надписью «ProductCode». Следующий GUID - это то, что вы будете вводить в MsiZap, скобки и все. Теперь вы просто (bwahaha ... да правильно) введите:

msizap T {product code}

Где "{product code}" заменяется найденным вами GUID. Это удалит все следы вашего продукта из базы данных MSI в Windows, что должно закрыть установщик.

Я понимаю, что все это нелепая боль в заднице. Я не понимаю, почему поиск кода продукта является таким испытанием. Но, я полагаю, если деинсталлятор сработал, вам не пришлось бы делать его работу сейчас. Там действительно может быть более простой способ сделать все это, но я не нашел один. Когда я нашел что-то, что сработало, я был над этим.

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

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

0 голосов
/ 24 августа 2011

Возможно, вы пытались удалить службу во время ее работы? В этом случае вам может потребоваться перезагрузка, чтобы прояснить ситуацию.

0 голосов
/ 24 августа 2011

Попробуйте с Powershell и Wmi:

(gwmi win32_service -filter "name='yourservicename'").delete()

Убедитесь, что окно services.msc закрыто. Иногда это портит удаление службы. Я не уверен, поможет ли это, вам не следовало трогать реестр!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...