简单任务管理器

上传人:wt****50 文档编号:53601083 上传时间:2018-09-03 格式:PPT 页数:9 大小:522KB
返回 下载 相关 举报
简单任务管理器_第1页
第1页 / 共9页
简单任务管理器_第2页
第2页 / 共9页
简单任务管理器_第3页
第3页 / 共9页
简单任务管理器_第4页
第4页 / 共9页
简单任务管理器_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《简单任务管理器》由会员分享,可在线阅读,更多相关《简单任务管理器(9页珍藏版)》请在金锄头文库上搜索。

1、用C语言实现,西安电子科技大信安协会 龚潇,简单任务管理器,西安电子科技大信安协会 龚潇,主函数 参数argc/argv,列出进程名和PID 函数GetProcess(void),结束选定的进程 函数KillProcess(int pid),调用CreateToolhelp32Snapshot 函数得到系统所有进程快照,调用Process32First和 Process32Next函数得到每个 进程的名字和PID,调用CloseHandle函数关闭系统 进程快照,封装GetKillPriv()函数进行提权,调用OpenProcess函数打开需要 结束的进程的句柄,调用TerminateProc

2、ess函数结束 我们需要结束的进程,1.主函数,西安电子科技大信安协会 龚潇,主函数main(int argc,char *argv) 不必多说了,argc表示参数个数,argv0是文件名,argv1表示传入的第一个参数 我们可以利用一个判断句, if(argc=2 & strcmp(argv1,“list“)=0) 进入我们GetProcess里。 或者if(argc=3 & strcmp(argv1,“kill“)=0)进入KillProcess里。 注意,字符串想比较大小得用strcmp函数,不能直接用argv1=“kill“来比较。,2.GetProcess函数,西安电子科技大信安协会

3、 龚潇,这个函数没有参数。作用是得到系统所有正在运行的进程快照。 先定义一个句柄变量hProcessSnap,则hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); TH32CS_SNAPPROCESS指定了进程快照类型,一般都是这个参数。0代表获取系统所有进程快照。 我们再定义一个BOOL类型变量bProcess,使 bProcess=Process32First(hProcessSnap,大家可以去MSDN上查找PROCESSENTRY32的定义),2.GetProcess函数,西安电子科技大信安协会 龚潇,while(b

4、Process) wprintf(L“%s-%dn“,pe32.szExeFile,pe32.th32ProcessID); bProcess=Process32Next(hProcessSnap, 当bProcess=TRUE时,说明获取快照成功了。就需要将获取的信息打印出来。pe32.szExeFile是进程名,pe32.th32ProcessID是进程PID。我们只需要这两项。输出即可。 直到bProcess=FALSE了,说明进程列举完了,我们的while语句也不执行了。 注意,因为我们的pe32.szExeFile是TCHAR类型,被宏解释成wchar_t类型(程序使用unicode

5、编码),所以需要用到wprintf输出字符串。,3.KillProcess函数,西安电子科技大信安协会 龚潇,刚才列举出了系统所有进程,如果我们想kill掉一个进程,就需要进入我们这个函数。 函数有一个参数:Pid,我们需要结束进程的PID。 我们需要定义一个句柄变量hProcess hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,Pid); 意思是打开Pid进程,有对它进行所有操作的权限(PROCESS_ALL_ACCESS),进程句柄不可继承(FALSE),返回该进程句柄。若失败则返回NULL。,3.KillProcess函数,西安电子科技大信安

6、协会 龚潇,最后一个函数,结束进程的函数。 TerminateProcess(hProcess,0); 参数是刚才返回该进程的句柄hProcess,后面的0是进程退出时的代码。一般都是0. 这个函数返回值是BOOL,成功为TRUE。 我们所有的程序也就只有这几个函数,如果去掉那些判断函数是否正确运行的if语句,程序的代码其实很短。,4.提权函数,西安电子科技大信安协会 龚潇,如果在NT之前的系统我们这个程序就能正常运行了。但NT以后的系统执行KillProcess之前我们还需要提权。 之前我也不是很清楚提权这个事,运行程序以后发现可以列出进程,但不能结束进程。 记得以前看书上介绍编写开关机的函

7、数需要提权,我才想到这个程序是否也要提权。 这里就不讲提权的那几个API函数了,网上都有封装好的提权函数,我们可以直接拿来用。 我们这个程序需要SE_DEBUG_NAME权限,以前做的开关机程序需要的是SE_SHUTDOWN_NAME权限,只需要在封装的提权函数里将这个参数更改,使之可以得到不同权限。,5.总结,西安电子科技大信安协会 龚潇,我简单的介绍了制作一个“任务管理器”的需要的步骤和用到的函数。 因为是命令提示符下的程序,没有界面,我们可以在cmd下运行它。(我们还能用快捷方式运行,但不如在cmd下直观) 这一个星期我对进程编程有了一定的了解,并通过自己的努力克服了许多困难成功编译了taskmanager.exe这个程序,完成了预定的任务。 我用到的资料有MSDN和几个PDF文档,“WINDOWS特权、权限介绍.pdf”,“Windows_API编程入门教程.pdf” ,还有一些网上的文章、教程。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号