qq112358hai198771
海豚14625
2015-01-05 10:48
采纳率: 100%
浏览 6.0k
已采纳

如何通过一个打开的文件夹句柄获得文件夹的完整路径

我在msdn上看到了一个例子,可以从一个打开的文件句柄获取到文件名,但是
那种方法对于文件夹的句柄是没有用的,msdn示例的链接地址:
http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa366789(v=vs.85).aspx

我期望能够从一个文件夹句柄得到该文件夹的完成路径,不知道谁可以帮助我!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • qq112358hai198771
    海豚14625 2015-01-19 07:13
    已采纳

    问题已解决,使用NtQueryObject()解决的。

    点赞 评论
  • caozhy

    这里的句柄说的是CreateFile/ReadFile用的句柄,不是FindFirstFile/FindNextFile的句柄。

    点赞 评论
  • qq112358hai198771
    海豚14625 2015-01-05 10:53

    我要实现的功能是文件隐藏,需要隐藏一个目录下的所有文件,
    我hook了NtQueryDirectoryFile这个API,里面能够获取的信息很有限,
    如果不能得到explorer.exe当前正在浏览目录的完成信息,可能会误将一个同名字目录下的文件都隐藏,希望高手解答。

    点赞 评论
  • qq112358hai198771
    海豚14625 2015-01-05 10:57

    我在网上找到了一个和我遇到同问题的朋友,他的帖子2楼里提到用NtQueryObject可以解决,
    我仔细的研究了NtQueryObject这个API,发现是不能够得到的。
    原帖地址如下:
    http://stackoverflow.com/questions/3820836/how-to-get-the-directory-name-path-from-an-opened-handle

    点赞 评论
  • caozhy

    隐藏文件直接写shell扩展就可以了。

    点赞 评论
  • oyljerry
    oyljerry 2015-01-05 11:03

    文件系统驱动过滤,filter

    点赞 评论
  • oyljerry
    oyljerry 2015-01-05 11:04

    如果上层应用,也可以通过ShellExtension来做。自己控制explore的行为

    点赞 评论
  • oyljerry
    oyljerry 2015-01-05 11:05

    但是Shell Extension等,对命令行没用,用户可以用命令行,dir查看

    点赞 评论
  • caozhy

    dir用的是ntdll,除非用ifs,否则还是无效的。那就大费周章了。

    点赞 评论
  • caozhy

    实际上windows提供了完善的文件系统权限管理,这种程序本身就是多此一举。

    点赞 评论
  • qq112358hai198771
    海豚14625 2015-01-06 00:51

    写一个Shell扩展有点大费周章了,简单一点的可以通过获取com接口来取得当前浏览的目录,
    或者通过枚举explorer的黄口,也可以。这两个方法是我的备选方案。

    点赞 评论

相关推荐