有没有办法使用 C# 以编程方式删除服务而无需执行“InstallUtil.exe /u MyService.exe”?
问问题
25888 次
4 回答
23
您可以使用 System.ServiceProcess.dll 中的ServiceInstaller.Uninstall 方法。例如:
ServiceInstaller ServiceInstallerObj = new ServiceInstaller();
InstallContext Context = new InstallContext("<<log file path>>", null);
ServiceInstallerObj.Context = Context;
ServiceInstallerObj.ServiceName = "MyService";
ServiceInstallerObj.Uninstall(null);
此方法将尝试在卸载之前先停止服务。
于 2012-08-30T16:30:47.387 回答
1
如果您要卸载的服务是您自己编写的,并且您已将安装程序添加到项目中,您可以简单地实例化您的 Installer 类并调用 Uninstall。例如,如果您将安装程序拖到设计器服务上并将该组件命名为“ProjectInstaller”,则可以使用以下代码让您的服务自行卸载:
var installer = new ProjectInstaller();
installer.Uninstall(null);
于 2012-08-30T16:42:01.103 回答
1
服务在 HKLM\SYSTEM\CurrentControlSet\services 下的 Windows 注册表中列出。如果您删除与服务的给定名称相对应的键(不是显示名称;它注册时使用的名称),您将有效地“取消注册”该服务。您可以使用Microsoft.Win32.Registry对象以编程方式执行此操作。您需要在执行计算机上具有 CAS 权限才能修改注册表项。
于 2012-08-30T16:31:28.357 回答
1
System.Configuration.Install.ManagedInstallerClass
.InstallHelper(new string[] { "/u", executablePath });
于 2012-08-30T16:30:16.060 回答