I am installing windows service and it works fine.
Now I am uninstalling the same service. (to be specific I am using installutil command for installing as well as uninstalling) The service gets uninstalled but when I go to command prompt and check the status开发者_Python百科 of the port it shows the port is still occupied. (Using netstat command)
Due to this when I try to delete the folder containing the service some of the dlls are not getting deleted and on trying to delete them forcefully I get the message already in user.
Can someone guide on this.
Use netstat -b to determine which executable is occupying your port, then kill it using task manager with the "Show processes from all users" option enabled.
Finally after doing testing different combination with netstat, I came up with this code
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);
}
and then to kill that process
private static void KillProcess(int PID)
{
try
{
Process p = Process.GetProcessById(PID);
p.Kill();
}
catch (Exception e)
{
MessageBox.Show(e.Message + "\n" + e.StackTrace);
}
}
精彩评论