我试图在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)。我可以打开当前进程,但不能打开父进程。
答案 0 :(得分:5)
在Windows Vista +上,您可以使用QueryFullProcessImageName
代替GetModuleFileNameEx
。 OpenProcess
只需要使用权限较低的PROCESS_QUERY_LIMITED_INFORMATION
标志进行调用。
答案 1 :(得分:4)
使用其他OpenProcess
标记调用PROCESS_VM_READ
,它应该有效:
h = OpenProcess
(
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE,
pid
);
另请参阅Mekap提到的可能重复