2009-10-05 89 views
1

我想知道一個文件是否由任何進程打開(包括調用者)已經發布了很多建議,這些建議往往圍繞嘗試打開該文件專門和捕捉異常。如何獲得所有進程的打開句柄集

在我的例子中,這沒有被證明是一個傻瓜式的方法。我相信我可以通過掃描所有正在運行的進程的文件類型的所有打開的句柄來獲取。

回答

1

我不認爲你可以簡單地用.NET和P/Invoke解決這個問題。您將需要訪問低級功能。見AdaraCD在這個線程在另一個論壇發佈的解決方案是使用驅動程序開發工具包(DDK):

Enum HANDLEs for a process

1

窮人的方式是從sysinternals shell處理.exe。我不知道它是否可以分發。它必須以管理員身份運行(我很確定你需要管理員權限來執行你想要的操作)。無論如何,如果你可以對它進行shell操作並將輸出重定向到一個文件或捕獲它的stdout,那麼你只需要解析它的輸出就可以得到你想要的結果。我在互聯網wayback搜索,它並沒有出現該標記r。曾經向他的公用事業發佈過消息。

這顯然不是一個好的解決方案,如果你有一個你分發的應用程序,但如果它只是在內部或許這將是足夠好的。

最好的問候, 不要

0

我記得代碼handle.exe有公開的信息來源,所以你可以使用這個非常實用的參考。