在Windows上模拟文件错误(例如ERROR_ACCESS_DENIED)

时间:2010-12-13 15:47:07

标签: windows winapi file-io filesystems

出于测试和开发目的,以某种方式模拟(虚假的)文件访问错误本地文件会很不错。例如,即使应用程序已正确打开具有适当限制性共享标志的文件,仍然可能发生尝试访问该文件(通过任何Win32 API函数或您喜欢的框架,内部将只调用任何一个Win32 API函数)可能会失败。

我能够追踪的唯一例子是机器上的病毒扫描程序,但我猜可能还有其他原因。 (在this question's comment, Luke mentions中有关“文件系统过滤器驱动程序”的内容。)

FWIW,我知道“模拟”文件问题的一些可能性,我考虑好的解决方案,要么是因为它们需要大量的手工工作,要么因为它们不适合每一个应用程序/文件:

  • 将文件放在网络驱动器或可移动存储设备上 - 这样您就可以搞砸设备(拔下插头,磁盘已满,......)。
  • Process Explorer中打开申请流程,然后关闭要测试的文件的句柄。

所以真正的问题是,是否有任何((半)自动化)工具可以搞乱文件访问(在NTFS驱动器上),即使应用程序已经已经打开一个合适的文件(对于应用程序)共享标志。

1 个答案:

答案 0 :(得分:1)

Holodeck声称允许Win32 API挂钩,这将使您能够根据故障注入的需要操作返回码。

如果您感兴趣的API集定义明确,您可以使用here所述的导入地址表方法自行完成此操作。