Возможный дубликат:
Как программно установить службу Windows на С#?
Есть ли способ программно удалить службу с помощью С# без необходимости запускать "InstallUtil.exe/u MyService.exe"?
Возможный дубликат:
Как программно установить службу Windows на С#?
Есть ли способ программно удалить службу с помощью С# без необходимости запускать "InstallUtil.exe/u MyService.exe"?
Вы можете использовать метод ServiceInstaller.Uninstall в System.ServiceProcess.dll. Например:
ServiceInstaller ServiceInstallerObj = new ServiceInstaller();
InstallContext Context = new InstallContext("<<log file path>>", null);
ServiceInstallerObj.Context = Context;
ServiceInstallerObj.ServiceName = "MyService";
ServiceInstallerObj.Uninstall(null);
Этот метод попытается остановить службу перед деинсталляцией.
System.Configuration.Install.ManagedInstallerClass
.InstallHelper(new string[] { "/u", executablePath });
Если то, что вы пытаетесь сделать, - это удалить службу, которую вы написали, изнутри, и вы добавили установщик в проект, вы можете просто создать экземпляр класса Installer и вызвать Uninstall. Например, если вы перетащили установщик в службу дизайнера и назвали этот компонент "ProjectInstaller", вы можете удалить свою службу со следующим кодом:
var installer = new ProjectInstaller();
installer.Uninstall(null);
Службы перечислены в реестре Windows в разделе HKLM\SYSTEM\CurrentControlSet\services. Если вы удалите ключ, соответствующий присвоенному имени службы (а не отображаемое имя, имя, под которым оно было зарегистрировано), вы получите эффективную "незарегистрированную" услугу. Вы можете сделать это программно с помощью объекта Microsoft.Win32.Registry. Для изменения записей реестра вам понадобятся разрешения CAS на исполняющем компьютере.