gobrdriver
驱动牛犊
驱动牛犊
  • 注册日期2009-04-18
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2259回复:5

文件重定向,运行不了需要Winsxs支持的dll的Windows应用程序

楼主#
更多 发布于:2009-10-02 23:37
我截获了各个文件操作函数,实现了文件重定向操作。目前可以work了。被重定向后的目录中的文件,例如a.txt, xx.chm,一些不需要Microsoft.Windows.Common-Controls的控制台可执行文件等文件或者目录都可以访问和执行。但是如果是可执行文件,并且使用了winsxs,(例如计算器, Winrar.exe等)则会报Resolve Partial Assembly 为Microsoft.Windows.Common-Controls失败,系统找不到指定的路径。Debug了很久都没有找到问题。

请牛人指点一二,大概是哪个文件函数没有处理好?我现在的做法是:
NtOpenFile/NtCreateFile
  original_file
  redirected_file = 从源文件计算重定向后的文件路径
  调用NtOpenFile(redirected_file)
 
主要是就这种类型的可执行文件不能work, 完全没想法。



znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2009-10-03 11:30
是在64位下运行32位程序吗?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
gobrdriver
驱动牛犊
驱动牛犊
  • 注册日期2009-04-18
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-10-07 10:15
32位 windows xp. sp1
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地板#
发布于:2009-10-09 18:24
是不是重定向的路径不对?winsxs的目录结构比较复杂.而且在vista及以后平台,也不允许直接改写
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
gobrdriver
驱动牛犊
驱动牛犊
  • 注册日期2009-04-18
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-10-12 17:31
传统的文件重定向大概怎么做的呢?我看过微软的一篇文章,它只是将caller提供的文件路径的buffer修改掉。但是这么做以后,对于QueryFileInfo之类的函数,还是需要做处理的,因为用户需要得到之前的文件名称。

winsxs的路径确实复杂,但是就这个目录找不到。我看过输出的文件路径的log,文件名称似乎是对的。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
5楼#
发布于:2009-10-13 09:10
还有一种可能就是,它是用fastio打开的文件,你要处理fastio把它禁掉,然后让它强制下发irp操作才行。reparse操作只对irp有效,对fastio 无效
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部