首页
社区
课程
招聘
[求助] vs2012驱动编程,怎么获取进程的路径文件名?
发表于: 2018-11-23 03:06 2358

[求助] vs2012驱动编程,怎么获取进程的路径文件名?

2018-11-23 03:06
2358
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2473
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
eprocess
2018-11-23 06:12
0
雪    币: 181
活跃值: (616)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
NTSTATUS
  PsLookupProcessByProcessId(
    IN HANDLE ProcessId,
    OUT PEPROCESS *Process
    );



NTKERNELAPI
UCHAR * PsGetProcessImageFileName(__in PEPROCESS Process);
2018-11-23 09:10
1
雪    币: 0
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
//获取进程路径
PUNICODE_STRING GetProcessImagePath(HANDLE ProcessId)
{
       //定义变量
       NTSTATUS status = STATUS_UNSUCCESSFUL;
       HANDLE ProcessHandle = NULL;
       ULONG ulen = 0;
       PVOID pImagePath = NULL;


       do
       {

               ProcessHandle = MyOpenQueryInfoProcess(ProcessId);
               if (ProcessHandle == NULL)break;

               status = ZwQueryInformationProcess(ProcessHandle, ProcessImageFileName, NULL,0, &ulen);
               if (status != STATUS_INFO_LENGTH_MISMATCH || ulen <= 0)break;


               ulen += sizeof(UNICODE_STRING);
               pImagePath = ExAllocatePool(NonPagedPool, ulen);
               RtlZeroMemory(pImagePath, ulen);

               status = ZwQueryInformationProcess(ProcessHandle, ProcessImageFileName, pImagePath, ulen, &ulen);

       } while (FALSE);
       SafeCloseHandle(ProcessHandle);
       if (!NT_SUCCESS(status))
       {
               ASSERT(FALSE);
               SafeFreeDelete(pImagePath);
       }
       return pImagePath;
}
2018-11-23 11:17
0
雪    币: 0
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
//获取进程路径
PUNICODE_STRING GetCurrentProcessImagePath()
{
       //定义变量
       NTSTATUS status = STATUS_UNSUCCESSFUL;
       ULONG ulen = 0;
       PVOID pImagePath = NULL;


       do
       {
               //打开进程
               status = ZwQueryInformationProcess(NtCurrentProcess(), ProcessImageFileName, NULL, 0, &ulen);
               if (status != STATUS_INFO_LENGTH_MISMATCH || ulen <= 0)break;


               ulen += sizeof(UNICODE_STRING);
               pImagePath = ExAllocatePool(NonPagedPool, ulen);
               RtlZeroMemory(pImagePath, ulen);

               status = ZwQueryInformationProcess(NtCurrentProcess(), ProcessImageFileName, pImagePath, ulen, &ulen);

       } while (FALSE);

       if (!NT_SUCCESS(status))
       {
               ASSERT(FALSE);
               SafeFreeDelete(pImagePath);
       }
       return pImagePath;
}
2018-11-23 11:18
0
雪    币: 516
活跃值: (3141)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem
6
谢谢楼上各位大爷
2018-11-23 13:26
0
游客
登录 | 注册 方可回帖
返回
//