Ответ 1

Вы можете использовать метод 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); 

Этот метод попытается остановить службу перед деинсталляцией.

Ответ 2

System.Configuration.Install.ManagedInstallerClass
                            .InstallHelper(new string[] { "/u", executablePath });

Ответ 3

Если то, что вы пытаетесь сделать, - это удалить службу, которую вы написали, изнутри, и вы добавили установщик в проект, вы можете просто создать экземпляр класса Installer и вызвать Uninstall. Например, если вы перетащили установщик в службу дизайнера и назвали этот компонент "ProjectInstaller", вы можете удалить свою службу со следующим кодом:

var installer = new ProjectInstaller();
installer.Uninstall(null);

Ответ 4

Службы перечислены в реестре Windows в разделе HKLM\SYSTEM\CurrentControlSet\services. Если вы удалите ключ, соответствующий присвоенному имени службы (а не отображаемое имя, имя, под которым оно было зарегистрировано), вы получите эффективную "незарегистрированную" услугу. Вы можете сделать это программно с помощью объекта Microsoft.Win32.Registry. Для изменения записей реестра вам понадобятся разрешения CAS на исполняющем компьютере.