在C中枚举文件句柄#

问题描述:

我想知道是否有可能在c#中枚举文件句柄,也许使用Win32API。这对于窗口和进程句柄很容易完成,但似乎文件句柄不可行。在C中枚举文件句柄#

尽管NtQuerySystemInformation提供了一些功能,但这些功能正在逐步淘汰,因此不建议使用这种方法。

+0

可能的重复http://*.com/questions/231547/tracing-which-process-that-has-opened-a-particular-file – 2010-04-10 00:00:37

您可以拨打sysinternal的Handle和分析的结果,或者写一个file system driver(可能是多的人一年的努力和can't be done in C#

嗯,你知道这是可能的,Sysinternals的手柄工具做的。 NtQueryInformation不会被淘汰,它是Win32和“真实”操作系统之间的一个基本的低级接口。

然而,永远不会发生的是允许迭代句柄的NtQueryInformation参数将被记录。因为它不仅仅停留在那里,所以一些muppet会使用它来调用CloseHandle(),以便不想被锁定的文件上。哪个是非常好破坏硬盘内容的好方法。

拥有句柄的进程不知道句柄已关闭。它会继续写入,可能完全忽略WriteFile()中的“它没有工作”的返回码。在程序打开另一个句柄之前,它是无害的,并获得与之前关闭的值相同的值。现在它开始写入混合垃圾(专用于前一个句柄)和新数据到句柄。彻底摧毁任何正在写入的内容。如果这是关键任务数据库的话,请将备份磁带分开。

我发现上市文件的工作例如在C#这里的名字处理的准备类...

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ac990847-6d04-4ae0-aafe-8355bbc3f769

向下滚动到最后一个线程,并按照那里的链接。并且要预先警告,一旦你下载了代码,评论用法语。我正在采取法语,所以我可以理解它的大部分内容。

+0

该地址的链接已损坏。 – mg30rg 2017-09-05 11:47:28