我目前正在通过虚拟化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函数以将虚拟路径映射到实际路径,但仍然存在相同的错误。
任何帮助/指导都会非常有帮助。感谢。
答案 0 :(得分:0)
当然不支持挂钩ntdll.dll,但是你遇到错误的原因是因为没有从进程上下文中读取路径。相反,激活上下文是通过委派给外部服务从清单生成的,这可能不会影响您的虚拟化层。我建议你改为查看文件系统过滤器。