【问题标题】:Simulating file errors (e.g. ERROR_ACCESS_DENIED) on Windows在 Windows 上模拟文件错误(例如 ERROR_ACCESS_DENIED)
【发布时间】:2010-12-14 01:27:08
【问题描述】:

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

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

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

  • 将文件放在网络驱动器或可移动存储设备上 - 这样您就可以弄乱设备(拔下、磁盘已满,...)。
  • 打开Process Explorer中的应用程序进程并关闭要测试的文件的句柄。

所以问题真的是,即使应用程序已经打开一个带有适当 (对于应用程序)共享标志。

【问题讨论】:

  • 我不知道这样的现成工具,但是使用虚拟文件系统驱动程序或文件系统过滤器驱动程序可以产生这样的行为。我们的产品可以让您在不进入内核模式的情况下构建此类工具。

标签: windows winapi file-io filesystems


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2019-10-10
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多