c# - 在 C# 中枚举文件句柄

标签 c# winapi file worker-processes

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

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

最佳答案

嗯,您知道这是可能的,SysInternals 的 Handle 实用程序可以做到这一点。 NtQueryInformation 不会被淘汰,它是 Win32 和“真实”操作系统之间必不可少的低级接口(interface)。

然而,永远不会发生的是允许迭代句柄的 NtQueryInformation 参数将被记录下来。因为它不止于此,一些布偶将使用它在她/他不想被锁定的文件上调用 CloseHandle()。这是销毁硬盘内容的非常好方法。

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

关于c# - 在 C# 中枚举文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611542/

相关文章:

python-3.x - 如何在Django中创建一个文件夹来存储用户输入

file - Chrome 打包应用程序 : Retrieving FileEntry in Dart from command line (LaunchData) parameter

C 在 Windows 7 下获取电池生命周期

c# - 如何从 ASP.Net Core 中的 SqlServerDBContextOptionsExtensions 获取连接字符串

c# - unity3d import c++ dll for pass by reference 方法

c# - 匿名类型列表或对象列表

windows - 返回键为具有焦点的按钮生成 IDOK

c# - 关闭时,任务栏占用的空间被阻塞,不释放

java - 如何在 java 中对目录中的文件进行排序?

c# - 线程安全的数据缓冲区,以进行大小受控的批量插入