我简单地这样写了一下,不过肯定可以查出某个端口所占用的程序路径。
string port = "4004";
Process pro = new Process();
// 设置命令行、参数
pro.StartInfo.FileName = "cmd.exe";
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.RedirectStandardError = true;
pro.StartInfo.CreateNoWindow = true;
// 启动CMD
pro.Start();
// 运行端口检查命令
pro.StandardInput.WriteLine("netstat -ano");
pro.StandardInput.WriteLine("exit");
// 获取结果
Regex reg = new Regex("\\s+", RegexOptions.Compiled);
string line = null;
while ((line = pro.StandardOutput.ReadLine()) != null)
{
line = line.Trim();
if (line.StartsWith("TCP", StringComparison.OrdinalIgnoreCase))
{
line = reg.Replace(line, ",");
string[] arr = line.Split(',');
if (arr[1].EndsWith(":" + port))
{
int pId = int.Parse(arr[4]);
Console.WriteLine(port+"端口的进程ID:{0}",pId);
int pid = Int32.Parse(arr[4]);
Process pro80 = Process.GetProcessById(pid);
// 处理该进程
Console.WriteLine(port + "端口的程序名:" + Process.GetProcessById(pId).MainModule.FileName);
break;
}
}
}
pro.Close();
在命令提示符下执行:
netstat -ano
可以看到占用某个端口号的程序的PID,然后通过任务管理器看下是哪个程序就可以了
可是 我程序要怎么写,要调用什么样的API才能知道呢?