我正在安装Windows服务,它运行正常。
现在我正在卸载相同的服务。 (具体来说,我使用installutil命令进行安装和卸载)服务被卸载但是当我进入命令提示符并检查端口的状态时,它显示端口仍然被占用。 (使用netstat命令)
由于这个原因,当我尝试删除包含该服务的文件夹时,某些dll没有被删除,并且在尝试强制删除它们时,我已经在用户中收到了该消息。
有人可以指导。
答案 0 :(得分:1)
使用netstat -b确定哪个可执行文件占用了您的端口,然后使用任务管理器使用“显示所有用户的进程”选项将其终止。
答案 1 :(得分:0)
最后在测试了与netstat的不同组合之后,我想出了这个代码
private static int GetProcessId(string portno)
{
string command = "netstat -o -n -a | findstr 0.0:" + portno;
ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.CreateNoWindow = true;
procStartInfo.UseShellExecute = false;
procStartInfo.RedirectStandardOutput = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
StreamReader sr1 = proc.StandardOutput;
string PID = sr1.ReadLine();
int index = PID.LastIndexOf(" ") + 1;
PID = PID.Substring(index, (PID.Length - (index--)));
return Convert.ToInt32(PID);
}
然后杀死那个进程
private static void KillProcess(int PID)
{
try
{
Process p = Process.GetProcessById(PID);
p.Kill();
}
catch (Exception e)
{
MessageBox.Show(e.Message + "\n" + e.StackTrace);
}
}