2012-12-25 23 views
1

當我試圖在我的C#程序中使用COM端口時,有時端口是打開的並被另一個程序使用。我想要具體產生這樣的警告消息:什麼程序或過程在C#中使用特定的串行端口

COM1端口被其他程序使用SomeApplication。是否要關閉該程序(請注意,您可能會丟失數據或其他後果)?」 -Yes-No

如何在C#中實現這種情況?

回答

3

這在Windows上不受支持,它需要在內核代碼中訪問未記錄的內核結構。隱藏這些信息是非常有意的,阻止程序完全按照你所設想的去做,從而殺死一個獲取資源的過程。一般來說,這是針對嘗試利用處理回收攻擊的惡意軟件的一種對策。

您的用戶可以使用SysInternals的Handle實用程序來查找過程,假設他不知道哪些應該是罕見的。在C#代碼中執行Handle.exe所做的操作是非常長的一次,你永遠不應該承諾。它動態地安裝一個設備驅動程序,以便獲得ring 0權限來訪問內核數據。內核結構在Windows版本之間發生了變化,在未來版本中可能會再次發生變化。

相關問題