获取进程阻止COM PORT的PID

时间:2015-09-06 00:53:55

标签: c# python windows serial-port

如何在Windows 7和/或更高版本上获取阻止某个COM端口的进程的进程ID?

我想以编程方式获取PID。如果可能的话,使用Python或C#,但语言并不重要,我只想了解这个过程。

1 个答案:

答案 0 :(得分:0)

过去10年左右,SO和许多其他论坛多次询问过这个问题。普遍接受的答案是使用sysinternals使用特定文件句柄查找进程。请记住,就win32 api而言,串口实际上只是一个文件。

所以,给你两个答案:

  1. 使用sysinternals查找违规应用程序。我不认为这种方法可以通过python工作,但你可能会破解.NET的东西。
  2. 在getHandles函数中使用NtQuerySystemInformation。查看结构并找出哪些字段对于识别有问题的过程非常有用。
  3. os.system(“taskkill blah blah blah”)使用应用程序对已知串口进行攻击。最后更多关于这个想法。
  4. 第二个想法听起来很有趣,但是我不认为在这种情况下果汁值得挤压。目前,相对少量的进程实际上使用串行端口,如果您在特定的问题域中工作,则您很清楚应用程序的调用方式。

    我只是针对我知道的任何应用程序运行taskkill(通过os.system)1)可以安全关闭,2)实际上可能有一个端口打开。使用这种方法,您可以省去枚举文件句柄的麻烦,并重新关注应用程序应该在做什么。