当我尝试在我的C#程序中使用com端口时,有时端口是打开的并且被另一个程序使用。我希望具体并生成如下警告信息:
“COM1
端口由名为SomeApplication
的其他程序使用。是否要关闭该程序(请注意,您可能会丢失数据或其他后果)?” -Yes
-No
如何在C#中实现此方案?
答案 0 :(得分:3)
Windows不支持此功能,它需要只能在内核代码中访问的未记录的内核结构。保持隐藏此信息是非常有意的,阻止程序完全按照您的想法进行操作,从而终止获取资源的过程。一般来说,这是针对恶意软件的一种对策,它试图利用处理循环攻击。
您的用户可以使用SysInternals的句柄实用程序来查找该过程,假设他不知道哪个应该是罕见的。在C#代码中执行Handle.exe所做的事情是一个非常长的镜头,你永远不应该承诺。它动态安装设备驱动程序,以便获得第0个访问内核数据的权限。并且Windows版本之间的内核结构发生了变化,并且在将来的版本中可能会再次发生变化。