我已经创建了一个工具,它提供了与微软的PSExec工具类似的功能,但它是从Java (没有"Exec“命令) https://dev.c-ware.de/confluence/display/PUBLIC/JRWShell+-+A+Java+library+for+remote+controlling+a+windows+shell完成的
我的问题是,通常我的lib会自动停止并卸载它创建的服务,但在通信失败的情况下,这不会自动发生。我希望动态创建的服务启动并侦听连接,并在连接关闭后终止。理想情况下,我希望Windows服务自动终止并自动卸载,但我认为如果不使用第二个Watchdog服务来自动清理已停止的服务,自卸载可能是不可能的。
所以我的问题是:服务有可能自行卸载吗?如果是,这是如何完成的?如果不可能,我如何使服务停止?
发布于 2012-09-28 22:26:41
事实证明,从服务内部卸载服务是可能的。然而,只要服务仍在执行并在其终止后被移除,服务就会留在服务列表中。
发布于 2015-06-14 18:31:42
我使用的是next代码,它是在我的服务上工作。但我还添加了"net stop serviceName“进程来卸载我的安装项目中的自定义操作(也许这很重要)。
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);
}
很抱歉给你额外的代码,它来自我的工作项目
https://stackoverflow.com/questions/11717680
复制相似问题