Windows下的进程管理和监控器分解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统安全课程设计报告Windows下的进程管理和监控器
目录
操作系统安全课程设计报告 0
一、概述 (2)
1.设计主要完成的任务 (2)
2.解决的主要问题 (2)
二、设计的基本概念和原理 (2)
1.概念 (2)
2.原理 (2)
三、总体设计 (3)
1.功能模块 (3)
2.流程图 (3)
四、详细设计 (4)
主要功能的代码实现: (4)
五、完成的情况以及使用说明 (22)
六、总结 (33)
七、参考文献 (34)
一、概述
1.设计主要完成的任务
设计一个Windows或Linux下的进程管理与监控程序,要求该程序完成以下功能:
(1)可获取当前正在运行的所有进程,包括进程PID、进程名称、CPU使用情况、当前用户名、内存占用量等;
(2)能进一步获取各进程的所有线程情况;
(3)能通过命令终止某个进程的执行,终止时能将其子孙进程全部终止;
(4)要求界面友好。
2.解决的主要问题
我们的电脑需要我们去了解它的运行状况,掌握和管理它的进程,并对其异常情况给予操作和控制,任务管理器就像是我们了解和控制自己电脑运作的一个窗口,通过这个窗口我们可以了解到电脑所有进程运行状况,并对运行的进程加于管理和控制。本管理器设计比较简洁,操作灵活,使用简单,可以为我们管理和控制计算机的进程提供了一个简便的方法,是我们控制本计算机进程和了解计算机进程情况的良好助手。
二、设计的基本概念和原理
1.概念
在本实验中,启动进程管理器后,可以通过”获取进程”功能来获得本计算机启动的进程,以及与该进程相关的信息,其中包括的信息有:进程映像名称,进程开启的线程数,进程的PID以及进程的优先数,我们可以通过这些信息来了解计算机中每个进程的使用状况。同时我们可以在进程管理器上选中一个要终止的的进程,点击“终止进程”功能按钮,该进程被终止执行并退出进程列表,其中还包括了自动刷新的功能,此按钮实现的功能正如我们电脑任务管理器的“进程”功能,当电脑执行程序不能通过关闭窗口进行正常的关闭时,可以借助此办法来关闭进程。我们还可以通过这个进程管理器来启动新的进程,当我们要在进程管理器里启动新的进程时,只要点击“启动新进程”按键,则会弹出“打开进程”对话框,我们可以通过对话框里的“浏览”窗口选择要打开的新进程,这是任务管理器里没有实现的功能,通过这个功能我们在管理计算机时变得更加灵活方便,也使进程管理的功能更加完善。在退出此进程管理器时候,只要选择“退出”功能按钮则可关闭进程管理器,快速退出管理器的界面。
2.原理
在VisualStudio环境设计一个基于对话框的应用程序,类似于Windows自带的任务管理器,主窗口上添加一个标签控件,加入四个页面,分别是:窗口信息、进程,服务和性能。其中,窗口信息显示当前正在运行的任务,用列表控件进行显示,并能够对任务进行操作,如:添加新任务,结束任务,切换任务等。进程页面显示当前系统正在运行的进程及相关的模块,线程等,用列表控件进行显示,并能够实行终止进程、进程列表保存到文件等操作。性能页面显示物理内存、虚拟内存和页文件等详细使用情况,CPU、内存的使用率,并绘制CPU使用率和内存使用率的图形,并用列表控件显示系统当前信息。
三、总体设计
1.功能模块
2.流程图
四、详细设计
主要功能的代码实现:
获得进程代码实现
Public Sub ListProcess()
On Error Resume Next
Dim i As Long, j As Long, n As Long
Dim proc As PROCESSENTRY32
Dim snap As Long
Dim exename As String '应用程序名
Dim item As ListItem
Dim lngHwndProcess As Long
Dim lngModules(1 To 200) As Long
Dim lngCBSize2 As Long
Dim lngReturn As Long
Dim strModuleName As String
Dim pmc As PROCESS_MEMORY_COUNTERS Dim WKSize As Long
Dim strProcessName As String
Dim strComment As String '装载进程注释的字符串
Dim ProClass As String '程序的类名
'开始进程循环
snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
proc.dwSize = Len(proc)
theloop = ProcessFirst(snap, proc)
i = 0
n = 0
While theloop <> 0
i = i + 1
'打开指定的进程序,并得到进程的句柄
lngHwndProcess = OpenProcess(PROCESS_QUERY_INFORMA TION Or PROCESS_VM_READ, 0, proc.th32ProcessID)
If lngHwndProcess <> 0 Then
'枚举系统中正在运行的进程模板
lngReturn = EnumProcessModules(lngHwndProcess, lngModules(1), 200, lngCBSize2)
If lngReturn <> 0 Then
'返回特定数目空格的
strModuleName = Space(MAX_PATH)
'获取一个已装载模板的完整路径名称
lngReturn = GetModule(lngHwndProcess, lngModules(1), strModuleName, 500) strProcessName = Left(strModuleName, lngReturn)
strProcessName = CheckPath(Trim$(strProcessName))
If strProcessName <> "" Then
'判断ITEM是否已经存在
j = HaveItem(proc.th32ProcessID)
If j = 0 Then '如果没有该进程
'获取短文件名
exename = Dir(strProcessName, vbNormal Or vbHidden Or vbReadOnly Or vbSystem)
If exename = "hh.exe" Then
'MsgBox SetProClass(proc.th32ProcessID,