阅读:2400回复:0
win7 下获得system进程打开的文件句柄所属文件名问题
我程序的目的是通过进程打开的文件句柄获取句柄对应的文件名,主要代码如下
status = PsLookupProcessByProcessId(ProcessId,&Process); //ProcessId=4,System process if(NT_SUCCESS(status) && Process) { KeStackAttachProcess(Process,&apcstate); status = ObReferenceObjectByHandle(handle, FILE_ALL_ACCESS, *IoFileObjectType, KernelMode, &Object, NULL); //handle--system打开的某文件句柄, } //之后通过object获得文件名 以上代码在WinXp上运行正常,所有进程都有效。但是在Win7上唯独对System进程无效 我观察了ObReferenceObjectByHandle的返回值是STATUS_INVALID_HANDLE,猜测是因为KeStackAttachProcess操作system进程没有成功,不知道是不是win7不允许attach它。 哪位大侠能告诉我其中的原因,或者有没有解决问题的办法。我看到Process Explorer可以看win7的句柄和文件不知道它是如何实现的。 感激不尽! |
|