首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自终止或卸载Windows服务

自终止或卸载Windows服务
EN

Stack Overflow用户
提问于 2012-07-30 16:19:48
回答 2查看 1.1K关注 0票数 1

我已经创建了一个工具,它提供了与微软的PSExec工具类似的功能,但它是从Java (没有"Exec“命令) https://dev.c-ware.de/confluence/display/PUBLIC/JRWShell+-+A+Java+library+for+remote+controlling+a+windows+shell完成的

我的问题是,通常我的lib会自动停止并卸载它创建的服务,但在通信失败的情况下,这不会自动发生。我希望动态创建的服务启动并侦听连接,并在连接关闭后终止。理想情况下,我希望Windows服务自动终止并自动卸载,但我认为如果不使用第二个Watchdog服务来自动清理已停止的服务,自卸载可能是不可能的。

所以我的问题是:服务有可能自行卸载吗?如果是,这是如何完成的?如果不可能,我如何使服务停止?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-28 22:26:41

事实证明,从服务内部卸载服务是可能的。然而,只要服务仍在执行并在其终止后被移除,服务就会留在服务列表中。

票数 2
EN

Stack Overflow用户

发布于 2015-06-14 18:31:42

我使用的是next代码,它是在我的服务上工作。但我还添加了"net stop serviceName“进程来卸载我的安装项目中的自定义操作(也许这很重要)。

代码语言:javascript
运行
复制
    private static string getMsiexecParameters()
    {
        return string.Format("/x {0} /quiet /qn", GetProductCode(CProductName));
    }

    public static string GetProductCode(string productName)
    {
        string query = string.Format("select * from Win32_Product where Name='{0}'", productName);
        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
        {
            foreach (ManagementObject product in searcher.Get())
                return product["IdentifyingNumber"].ToString();
        }
        return null;
    }

    public static void Uninstall()
    {
        ProcessStartInfo psi = new ProcessStartInfo("msiexec.exe", getMsiexecParameters());
        Process.Start(psi);
    }

很抱歉给你额外的代码,它来自我的工作项目

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11717680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档