【问题标题】:Create a virtualized file-system directory expected by a third-party application创建第三方应用程序期望的虚拟化文件系统目录
【发布时间】:2022-11-10 03:55:25
【问题描述】:

我有一个关于 Windows 中内存虚拟化可能性的问题。这是场景:

  1. 我有第 3 方应用程序(无法访问他们的代码或修改它),它要求在 C:\PathToApp\AwesomeApp\DataDir 中提供数据文件

  2. 我想做一个加载器来打开这个应用程序,当应用程序尝试访问DataDir时,它会从加载器内存加载(不保存到驱动器),所以所有对DataDir的请求都被拦截,所有操作都在仅记忆。

    是否有允许我执行此操作的 Windows API?实际上,我想在加载程序中创建一个虚拟化目录,该目录将欺骗第三方应用程序认为真实的文件系统目录存在于硬编码位置。

【问题讨论】:

    标签: windows winapi filesystems virtual-directory


    【解决方案1】:

    Windows Projected Filesystem (ProjFS) 正好允许这样做。

    Windows 投影文件系统 (ProjFS) 允许称为“提供者”的用户模式应用程序将分层数据从支持数据存储投影到文件系统中,使其在文件系统中显示为文件和目录。例如,一个简单的提供者可以将 Windows 注册表投影到文件系统中,使注册表项和值分别显示为文件和目录。一个更复杂的提供者的例子是VFS for Git,它用于虚拟化非常大的 git 存储库。

    这是实现只读“注册表文件系统(RegFS)”的a sample project on GitHub。它使用 ProjFS 将注册表项映射到文件夹并将注册表值映射到文件。

    请注意,ProjFS 是一个可选组件,仅受 Windows 2018 年 10 月 10 日更新(版本 1809)及更高版本支持。

    【讨论】:

    • ProjFS 似乎没有提供创建或上传新文件到“后备存储”的方法,因为它只是将另一个数据源“投影”为 FS,而不是在本地和远程后备存储之间进行同步,是正确的?
    【解决方案2】:

    投影文件系统是否在 git VFS 以外的任何地方使用?我觉得这在其他情况下可能很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多