解决scheme重写旧软件的path,以防止在%programfiles%

我正在寻找一个解决scheme来重写特定的path,在它自己的文件夹里,在%programfiles%中使用旧的软件。

旧软件将数据保存在自己的文件夹中需要编辑权限(降低安全性)或给予最终用户pipe理权限(最终用户将破坏系统)。

是否有一个解决scheme钩和重写软件可能想要读/写的特定path,从“%programfiles%\ $ SoftwareName \ $ SaveFolder”到“%userprofile%\ Documents \ $ SoftwareName \ $ SaveFolder”需要最终用户的pipe理权限?

请注意,%userprofile%应始终链接到当前用户的configuration文件,而不是一个特定的用户文件夹。

是的,你问的是可能的。 你可以为此写一个文件系统filter驱动程序 。 文件系统筛选器驱动程序能够拦截每个对文件系统的读写操作,检查某些path名称的操作,并将操作redirect到不同的path名称。 这就是Windows Vista及以上版本用于“UAC文件虚拟化”的文件和文件夹redirect的情况 – 尝试写入受保护的系统文件夹的应用程序自动将应用程序redirect到AppData之类的东西。 如果您发出fltmc命令查看系统上当前安装的filter驱动程序,则可能会看到luafv列出。 (UAC最初名为LUA),FV代表文件虚拟化。

尽pipe如此,除非内核编程和驱动程序写作自然而然地发生在你身上,这不是一件容易的事情。

事实上,现在我想到了… UAC文件虚拟化应该已经在为您处理了。 这正是它的devise目的 – 使试图写入Program Files或HKLM的应用程序,写入UserData或HKCU。 需要对您的应用程序和系统进行更深入的检查,以确定为什么要避免UAC虚拟化。

另一个解决scheme,你可能会发现更容易,将创build一个应用程序兼容垫片 。 我认为这种方法比文件系统filter驱动程序更可取。

AppCompat Shim能够自定义文件和文件夹redirect。 我会说这是更好的,因为它更容易,它只针对你的不速之客的应用程序,而不是通过安装一个驱动程序进行系统范围的修改。