从虚拟路径启动应用程序时如何防止SxS错误?

时间:2010-03-23 06:25:19

标签: c virtualization

我目前正在通过虚拟化NtDll.dll级别的所有文件/注册表操作来开发一个简单的应用程序虚拟化层。

但是当我从虚拟路径启动应用程序时,如果虚拟路径在实际主机中不存在,则应用程序无法启动。

以下是示例
    如果虚拟文件系统的基本路径为H:\ VirtualFS,则H:\ VirtualFS \ c \ folder \ file.exe映射到c:\ folder \ file.exe。     如果我从我的虚拟化层启动此exe,并且如果主机操作系统包含文件夹c:\ folder,那么我可以正确启动file.exe。    如果主机操作系统没有文件夹c:\文件夹,则由于SxS错误导致应用程序启动失败,这是错误

     Generate Activation Context failed for c:\folder\file.exe. Reference error message: The operation completed successfully.

我甚至尝试覆盖RTCreateProcessParameters函数以将虚拟路径映射到实际路径,但仍然存在相同的错误。

任何帮助/指导都会非常有帮助。感谢。

1 个答案:

答案 0 :(得分:0)

当然不支持挂钩ntdll.dll,但是你遇到错误的原因是因为没有从进程上下文中读取路径。相反,激活上下文是通过委派给外部服务从清单生成的,这可能不会影响您的虚拟化层。我建议你改为查看文件系统过滤器。