2010-04-13 68 views
0

我正在嘗試編寫一個簡單的程序,最好是用C語言來查看給定的目錄。每當進程訪問該目錄時,我只想打印出該進程的名稱。這似乎很簡單,但我在MSDN上找到解決方案的簡稱。有誰知道我會需要哪些圖書館電話或任何有用的建議?我已經考慮過重複查詢哪些進程在給定的目錄中處理,並只是注意添加到列表中。這種方法看起來非常密集,我希望有一種更簡單的方法。謝謝。顯示訪問文件夾的進程

+0

您是否需要編寫代碼來執行此操作,或者您是否願意使用現有的工具? (換句話說,你是否試圖將這個功能添加到一些現有的/新的程序中,或者你是否在做這個練習來弄清楚如何做到這一點?) – reuben 2010-04-14 07:46:06

+0

最終它將成爲更大項目的一部分,但我確實不知道實現這個功能... – Bsaltafo 2010-04-15 19:00:47

回答

1

在用戶模式下沒有支持的方式。您可以使用FindFirstChangeNotification API來確定文件或目錄何時發生更改,但不會告訴您是誰發佈的。您可能能夠鉤住一些東西來獲取這些信息......但這當然不被支持。

如果您可以使用驅動程序,則可以使用Event Tracing for Windows獲取此信息。這是Sysinternals ProcMon使用的。但是安裝驅動程序是一個非常侵入性的過程,驅動程序中的錯誤會導致BSOD,並且安裝驅動程序需要管理權限。要記住的事情。

+0

你可以給我更多的信息,我需要鉤嗎? – Bsaltafo 2010-04-13 17:50:35

+0

也是,FindFirstChangeNotification和[ReadDirectoryChangesW](http://msdn.microsoft.com/en-us/library/aa365465%28VS.85%29.aspx)也延遲了對於WinXP的訪問事件報告長達1天,並在Vista +上長達1小時,以節省性能。 – clyfe 2010-06-09 08:31:15