【发布时间】:2014-08-31 13:30:32
【问题描述】:
我尝试了两种方法来获取过程描述
解决方案1:-
code:-
Process proc = Process.GetProcessById(pid);
string process_description= proc.MainModule.FileVersionInfo.FileDescription
问题:-当我们尝试访问某些进程 0(空闲)、4(系统)或服务(具有管理员访问权限)的 MainModule 属性时 (很可能是那些在 SYSTEM 凭据下运行的用户)没有权限的用户会导致 win32 ACCESS DENIED EXCEPTION。
解决方案 2:-
code :
string process_description=FileVersionInfo.GetVersionInfo(modulePath).FileDescription;
问题 :-如果文件描述未在具有管理员权限的 exe 文件或进程的属性详细信息窗口中提及,则无法获取进程描述。
例如:如果进程是谷歌浏览器。 ImageName:-chrome.exe 描述:谷歌浏览器 我想获取描述部分而不是图像名称。
任何人都可以分享您的想法,如何在任务管理器中获取特定进程 ID 的进程描述。
【问题讨论】:
-
您的解决方案 1 似乎是您需要做的。
-
@DavidHeffernan:-是的,但我有问题。当我试图获取具有 adim 权限的进程的文件描述时,它会抛出一个 win32 访问被拒绝异常。所以在这种情况下怎么能我得到了过程描述?
-
为什么没有管理员权限?如果您不能这样做,请找到可执行文件的完整路径,并阅读版本信息资源以查找信息。
-
@DavidHeffernan:-我的要求是捕获所有用户的活动窗口详细信息,如应用程序标题、进程描述、开始时间和结束时间。所以所有用户都没有管理员权限。是的,我能够获得可执行文件的完整路径,但对于某些可执行文件,文件描述部分是空的。所以它返回的应该是空的。所以我想我应该从任务管理器那里得到描述