获取父进程名称(Windows)

时间:2015-04-29 09:40:37

标签: c windows winapi process

我试图在Windows控制台应用程序(C / C ++)中获取父进程的名称(完整路径)。它看起来应该有效,但它失败了,我看不出我做错了什么。它成功获取父PID,但未获取名称。任何更正都将不胜感激。

UPDATE
    TABLE_NAME
SET
    column01 = CASE column01 WHEN '' THEN NULL ELSE column01 END,
    column02 = CASE column02 WHEN '' THEN NULL ELSE column02 END,
    column03 = CASE column03 WHEN '' THEN NULL ELSE column03 END,
    ...

其他信息: OpenProcess返回5(ERROR_ACCESS_DENIED)。如果我按照建议添加PROCESS_VM_READ,则返回299(ERROR_PARTIAL_COPY)。我可以打开当前进程,但不能打开父进程。

2 个答案:

答案 0 :(得分:5)

在Windows Vista +上,您可以使用QueryFullProcessImageName代替GetModuleFileNameExOpenProcess只需要使用权限较低的PROCESS_QUERY_LIMITED_INFORMATION标志进行调用。

答案 1 :(得分:4)

使用其他OpenProcess标记调用PROCESS_VM_READ,它应该有效:

h = OpenProcess
    (
    PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
    FALSE,
    pid
    );

另请参阅Mekap提到的可能重复