利用高级语言实现系统相关处理
2013-01-04隋丽娜
隋丽娜,孟 伟
(河北民族师范学院 数学与计算机系,河北 承德 067000)
Microsoft公司的Windows操作系统是目前世界上应用最广泛的操作系统,Visual Basic作为Microsoft旗下的一款编程语言在控制Windows系统工作时具有得天独厚的优势,可以通过Visual Basic实现对操作系统一些基本功能的处理及相关操作,如系统的启动、任务栏、桌面、控制面板等,为以后的相关开发积累经验。本文主要利用VB语言的高级功能来实现关机、启动等控制,例如利用API函数实现计算机的关闭、注销、重新启动控制功能,程序运行界面如图1所示。
图1 关机、启动等控制
1 技术要点
本例主要应用API函数来实现计算机的关闭、启动等功能控制,用到的函数有:
*GetCurrentProcessID函数,得到当前进程的ID;
*OpenProcessToken函数,得到进程的令牌句柄;
*LookupPrivilegeValue函数,查询进程的权限;
*AdjustTokenPrivileges函数,判断令牌权限;ExitWindowsEx函数,退出windows,并用特定的选项重新启动。
要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,需要当前进程具有SeDeDebug权限。如果一个用户是Administrator或是被给予了相应的权限,就可以具有该权限。但要注意:要修改一个进程的访问令牌,首先要获得进程访问令牌的句柄,这可以通过OpenProcessToken得到,接着可以调用AdjustTokenPrivileges对这个访问令牌进行修改。
2 开发过程
(1)创建一个项目,将其命名为Exam,默认窗体为Form1,修改其标题属性为“关机、启动等控制”。
(2)从工具箱中向Form1窗体添加三个图像框、三个标签和一个命令按钮,如图所示修改其相应属性。
(3)主要程序代码:
3 关键代码分析
在窗体的通用区声明程序中应到的所有API函数,用Const关键字定义常量,并自定义结构体LUID待用;在窗体的Load事件中,进行一些初始化操作,并用语句AdjustTokenPrivileges hTokenHandle,False,tkpNew,Len(tkpPrevious),tkpPrevious,lBuffer-Needed允许当前应用程序有关闭操作系统权限;然后在图像或文字的单击事件中分别调用API函数实现相应功能,如用ExitWindowsEx EWX_FORCE Or EWX_SHUTDOWN,0语句关闭计算机,用ExitWindowsEx EWX_LOGOFF,0语句注销计算机,用ExitWindowsEx EWX_REBOOT,0语句重新启动计算机等。
4 难点剖析
实例的难点是对实现对计算机的关机等启动控制的相关API函数的理解,虽然有的函数名字本身比较直观易于理解,但函数的实际应用中经常用到很多的参数是不容易理解的。参数中有时直接用VB常量表示,有时是用十六进制数值表示,这样一来,在读程序时就比较难于理解,当然也就难于被记牢。如有需要可多多查阅API函数的相关资料来获得有用的信息。