APP下载

利用高级语言实现系统相关处理

2013-01-04隋丽娜

河北民族师范学院学报 2013年2期
关键词:句柄令牌窗体

隋丽娜,孟 伟

(河北民族师范学院 数学与计算机系,河北 承德 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函数的相关资料来获得有用的信息。

猜你喜欢

句柄令牌窗体
称金块
基于路由和QoS令牌桶的集中式限速网关
试谈Access 2007数据库在林业档案管理中的应用
动态令牌分配的TCSN多级令牌桶流量监管算法
高校图书馆持久标识符应用研究
编译程序语法分析句柄问题分析与探讨
巧设WPS窗体控件让表格填写更规范
令牌在智能小区访客系统的应用
WinCE.net下图形用户界面的开发