我试过两种方式来获得过程描述
解决方法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文件或进程的属性详细信息窗口中未提及文件描述,则无法获取进程描述。
例如:如果进程是Google Chrome。 ImageName:-chrome.exe描述:谷歌chrome 我想让描述部分不是图像名称。
任何人都可以分享您的想法如何在taskmanager中获取特定进程ID的进程描述。
答案 0 :(得分:2)
该信息包含在可执行文件的VERSIONINFO
资源中。您正在寻找名为FileDescription
的值。
使用LoadLibraryEx
传递LOAD_LIBRARY_AS_IMAGE_RESOURCE
。然后使用资源API FindResource
,LoadResource
,LockResource
等获取版本信息资源。最后,解析出信息。
或者你可以直接解析PE文件,这是我怀疑像任务管理器这样的程序出于性能原因而做的。但那会更复杂。