Win32文件已锁定以供阅读:如何找出锁定它们的人

War*_*pin 7 c++ file-io winapi visual-c++

在C++中(特别是在Visual C++上),有时您无法打开文件,因为另一个可执行文件已打开并且没有共享它以进行读取.如果我尝试打开这样的文件,我怎么能以编程方式找出锁定文件的人?

Dum*_*Guy 12

在Windows 2000及更高版本中,如果不使用内核模式驱动程序,则无法执行此操作.Process Explorer和其他类似工具会自动加载驱动程序以完成此操作.这是因为文件句柄位于内核空间中,用户模式应用程序(EXE文件)无法访问.

如果您真的对此感兴趣,请看一下这个项目.


MSa*_*ers 5

MSDN 批准的方式是IFileIsInUse::GetAppName(). 不过需要 Vista。

  • 当然,尝试一下并没有什么坏处,但是它起作用的机会非常低,所以无论如何OP很可能需要一个替代方案。 (3认同)
  • 这似乎需要打开文件的程序的配合,这与所要求的不同。 (2认同)