首页
社区
课程
招聘
[求助]如何获取指定进程中的文件句柄?
发表于: 2009-5-12 10:54 6306

[求助]如何获取指定进程中的文件句柄?

2009-5-12 10:54
6306
收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
ZwQuerySystemInformatin查询 SystemHandleInfo找出所有者是System进程并且HandleType是File类型的句柄, DuplicateHandle到自己进程中然后 ZwQueryInformationFile查询它的 FileNameInformation,想要哪个自己取就OK了
2009-5-12 11:12
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
代码可参考LzOpenProcess,它搞的是进程你要的是文件,改吧改吧就可以用了
2009-5-12 11:13
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
非常感谢 achillis
2009-5-12 13:12
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
又遇到问题, 我在调用NtQueryInformationFile的时候, 老报错:STATUS_OBJECT_TYPE_MISMATCH

下面是代码:
DuplicateHandle(hProcess,
                           (HANDLE)pHandleInfo->Information[i].Handle,
                            INVALID_HANDLE_VALUE,
                            &DupHandle,
                            0,
                            FALSE,
                           DUPLICATE_SAME_ACCESS);

                        Status = NtQueryInformationFile(DupHandle,
                                                                            &IoBlock,
                                                                            pFileNameInfo,
                                                                            sizeof(FILE_NAME_INFORMATION),
                                                                            FileNameInformation);
                        if(Status != STATUS_SUCCESS)
                                return NULL;

不知道哪里错了. 怎么会类型不匹配? 望achillis 解答一下[LEFT][/LEFT]:
代码怎么对不齐, 编辑的时候对齐的
2009-5-12 14:58
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
你要先判断句柄的类型是不是文件,是才能用ZwQueryInformationFile
2009-5-12 17:35
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我加了判断, 但是有出现一个问题: 报STATUS_INVALID_DEVICE_REQUEST 这个错误. 这是什么原因?

是参数设置的问题吗? 还是其他的...
2009-5-12 21:12
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
查询不成功的直接跳过~
2009-5-12 21:52
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
直接跳过? 为什么, 是因为权限的问题,?
2009-5-12 22:13
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
10
原因可能是多方面的,总会出现查询不成功的情况,不必管它
2009-5-12 22:23
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢啊, 问题解决了...
2009-5-13 16:13
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
12
查询最好开线程,超时~否则必将惨遭卡死
2009-5-13 17:02
0
游客
登录 | 注册 方可回帖
返回
//