从进程名称获取进程ID
你好 我正在尝试用 C 语言使用 Windows API 做一个项目。我的项目中的一小部分是获取 lsass.exe 的进程 ID。
我已经尝试过下面的程序,但它不起作用。 我读过有关 CreateToolhelp32Snapshot、Process32First、Process32Next 函数的内容,任何人都可以帮助我解释如何在代码中使用它们。
所以请帮助我。 我是 Windows API 的初学者,所以如果有人能给我推荐一本好的电子书供我参考,我将不胜感激。
Hi
i am trying to do a project using windows API in C language. The small part in my project is to get process ID of lsass.exe.
i have tried the program below but it wont work.
i have read about the CreateToolhelp32Snapshot, Process32First, Process32Next functions can anyone help me explaining how to use them in the code.
So please help me.
i am a beginner to windows API so i will appreciate it if anyone can suggest me an good ebook to refer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
由于进程名称可能有多个实例在运行,因此进程的映像名称和 PID 之间不存在一对一的关联。您必须按照 Burgos 的描述,使用 EnumProcesses 枚举进程并检查每个进程的基本模块名称。
FWIW,.Net 通过提供 GetProcessesByName API 来解决此问题,该 API 返回进程对象的集合。当然对你没有多大用处:-(
Because there might be several instances of a process name running, there is no one-to-one correlation between a process's image name and a PID. You'll have to enumerate the processes and check the base module names for each one as Burgos describes, by using EnumProcesses.
FWIW, .Net approaches this problem by providing the GetProcessesByName API, which returns a collection of process objects. Not much use to you of course :-(
我不知道更简单的方法。这是通过查找每个正在运行的 PID 并将其名称与“lsass.exe”进行比较来实现的。
I don't know for simplier way. This is working by finding every running PID and comparing its name to "lsass.exe".
这是对
Luis G. Costantini R.
代码的修改。它使用MFC:
This is modification of
Luis G. Costantini R.
code.It uses MFC:
有一个如何使用
CreateToolhelp32Snapshot
、Process32First
、Process32Next
的示例(您必须添加错误句柄等,并包含tlhelp32 .h
在您的代码中)。顺便说一句,此函数与 Windows NT 不兼容:这里是使用此函数的完整示例。
There is an example of how to use
CreateToolhelp32Snapshot
,Process32First
,Process32Next
(You have to add error handles, etc. and includetlhelp32.h
in your code). By the way this functions are not compatible with Windows NT:here is a complete example of the use of this funcions.