代码之家  ›  专栏  ›  技术社区  ›  NotI.mportant

虚拟化Windows中第三方应用程序目录的存在(某种加载程序?)

  •  0
  • NotI.mportant  · 技术社区  · 2 年前

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

    1. 我有第三方应用程序(没有访问或修改代码的选项),它要求在 C:\PathToApp\AwesomeApp\DataDir

    2. 我想做一个加载器,打开这个应用程序,当应用程序试图访问 DataDir ,然后从加载器内存加载(不保存到驱动器),因此所有请求 数据目录 被拦截,所有操作仅在内存中完成。

    有没有Windows API允许我这么做?实际上,我想在加载程序中创建一个虚拟化目录,这会诱使第三方应用程序认为一个真正的文件系统目录存在于硬编码位置。

    0 回复  |  直到 2 年前
        1
  •  4
  •   Cody Gray    2 年前

    这个 Windows Projected Filesystem (ProjFS) 正是这样。

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

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

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