鱼C论坛

 找回密码
 立即注册
查看: 2897|回复: 11

有没有直接获取系统进程的函数。

[复制链接]
发表于 2016-11-13 21:28:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,有没有直接获取到系统进程的函数。

就是这些:
360截图20161113214726416.jpg

目前用的:

先获取所有的 进程名/pid。

然后用OpenProcess尝试打开,拒绝访问的包括一部分。

剩下的用GetModuleFileNameEx寻找目录,在Windows目录下的也是一部分。


有没有更好的方法?@无符号整形 @小甲鱼 @不二如是 @~风介~ @SixPy
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-13 22:15:06 | 显示全部楼层
1.多个svchost进程其实是一个svchost.exe的多个实例
2.如果拒绝访问 尝试令牌提权 + 管理员权限
这里有C++代码(令牌提权)
http://m.blog.csdn.net/article/details?id=5772510

点评

如果看不懂C++的话,可以联系我,我帮你写个dll,然后你调用里面的函数  发表于 2016-11-13 22:18

评分

参与人数 1荣誉 +8 鱼币 +8 贡献 +5 收起 理由
拈花小仙 + 8 + 8 + 5 热心回复`

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-13 22:44:02 | 显示全部楼层
枚举进程,根据用户名判断是一个方案。或者你能在进程的属性字段中找到区分系统进程和用户进程的字段也可以。直接获取的API目前没有发现。。。

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-13 22:47:06 | 显示全部楼层
拒绝访问的一部分是你的权限不够,像2楼说的提升令牌可以访问。还有一种无法访问的是像杀毒软件的一些进程,会拒绝访问,可能是有保护。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 08:59:54 | 显示全部楼层
无符号整形 发表于 2016-11-13 22:15
1.多个svchost进程其实是一个svchost.exe的多个实例
2.如果拒绝访问 尝试令牌提权 + 管理员权限
这里有C+ ...

不是要提取,是要获取到哪些是 系统进程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-14 09:02:30 | 显示全部楼层
musilintan 发表于 2016-11-13 22:44
枚举进程,根据用户名判断是一个方案。或者你能在进程的属性字段中找到区分系统进程和用户进程的字段也可以 ...

枚举进程好像只返回 pid?
EnumProcesses这个函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-14 11:58:57 | 显示全部楼层
wei_Y 发表于 2016-11-14 09:02
枚举进程好像只返回 pid?
EnumProcesses这个函数。


用ToolHelp32系列函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-14 23:40:10 | 显示全部楼层
wei_Y 发表于 2016-11-14 09:02
枚举进程好像只返回 pid?
EnumProcesses这个函数。

1.你有Pid了吧。
2.OpenProcessToken(),打开进程的访问令牌。TOKEN_QUERY。
3.GetTokenInformation(),获取令牌信息,TokenUser可以获得用户Sid。
4.有了Sid自然就能知道对应的用户名。
5.用户名都有了,还等着我给你写第5条啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-15 10:09:07 | 显示全部楼层
musilintan 发表于 2016-11-14 23:40
1.你有Pid了吧。
2.OpenProcessToken(),打开进程的访问令牌。TOKEN_QUERY。
3.GetTokenInformation() ...

嗯,这也是个方法,但是这个方法不比现在使用的简便。。
现在使用:  
1. 获取名称/Pid   --- cmd命令。
2. OpenProcess打开,拒绝访问的 作为系统进程添加在列表里。
3. GetModuleFileNameEx寻找这个进程的目录,在Windows下的 也添加在列表里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-15 10:54:46 | 显示全部楼层
wei_Y 发表于 2016-11-15 10:09
嗯,这也是个方法,但是这个方法不比现在使用的简便。。
现在使用:  
1. 获取名称/Pid   --- cmd命令。 ...

主要还是看你对系统进程的理解和需求。如果你说的这个方法可以达到你的需求,那这个方法也是可以的。其他的办法差别就是在于准确性和效率。最终看的就是结果的对比。只要能达到需求的就可以啦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-18 09:27:28 | 显示全部楼层
转到PSAPI页。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 09:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表