我想知道是否有可能在c#中枚舉文件句柄,也許使用Win32API。這對於窗口和進程句柄很容易完成,但似乎文件句柄不可行。在C中枚舉文件句柄#
儘管NtQuerySystemInformation提供了一些功能,但這些功能正在逐步淘汰,因此不建議使用這種方法。
我想知道是否有可能在c#中枚舉文件句柄,也許使用Win32API。這對於窗口和進程句柄很容易完成,但似乎文件句柄不可行。在C中枚舉文件句柄#
儘管NtQuerySystemInformation提供了一些功能,但這些功能正在逐步淘汰,因此不建議使用這種方法。
您可以撥打sysinternal的Handle和分析的結果,或者寫一個file system driver(可能是多的人一年的努力和can't be done in C#)
嗯,你知道這是可能的,Sysinternals的手柄工具做的。 NtQueryInformation不會被淘汰,它是Win32和「真實」操作系統之間的一個基本的低級接口。
然而,永遠不會發生的是允許迭代句柄的NtQueryInformation參數將被記錄。因爲它不僅僅停留在那裏,所以一些muppet會使用它來調用CloseHandle(),以便不想被鎖定的文件上。哪個是非常好破壞硬盤內容的好方法。
擁有句柄的進程不知道句柄已關閉。它會繼續寫入,可能完全忽略WriteFile()中的「它沒有工作」的返回碼。在程序打開另一個句柄之前,它是無害的,並獲得與之前關閉的值相同的值。現在它開始寫入混合垃圾(專用於前一個句柄)和新數據到句柄。徹底摧毀任何正在寫入的內容。如果這是關鍵任務數據庫的話,請將備份磁帶分開。
我發現上市文件的工作例如在C#這裏的名字處理的準備類...
向下滾動到最後一個線程,並按照那裏的鏈接。並且要預先警告,一旦你下載了代碼,評論用法語。我正在採取法語,所以我可以理解它的大部分內容。
該地址的鏈接已損壞。 – mg30rg 2017-09-05 11:47:28
可能的重複http://stackoverflow.com/questions/231547/tracing-which-process-that-has-opened-a-particular-file – 2010-04-10 00:00:37