【发布时间】:2017-10-15 08:48:44
【问题描述】:
我正在编写一个 C 程序,我需要知道使用其 pid 的进程的用户名。有什么办法吗?
我写了以下代码:
int pid = getpid();
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
hProcess 的值为 NULL; 我需要进程的用户名,我也可以在任务管理器中看到。 (顶层进程)。
还附上了任务管理器的截图。 Task Manager
【问题讨论】:
-
请展示您迄今为止的研究/调试工作。请先阅读How to Ask页面。
-
我无法在 C 中找到解决方案。我可以在 C++/C# 中完成,但由于语言限制,我只能使用 C 语言。我使用 getpid() 命令获得了当前进程的 pid,但我需要进程的用户名。
-
@nikhilsid 那么你如何在 C++ 中做到这一点?
-
您可能正在寻找
GetUserName函数。如果你能用 C++ 做,那么你也能用 C 做,如果不能,请告诉我们原因,否则很难提供帮助。 -
如果
OpenProcess正在返回NULL,这意味着调用失败。您需要致电GetLastError查找错误代码。最可能的原因是进程 ID 无效或您的进程没有目标进程的访问权限。