WEB开发网
开发学院软件开发VC 基于图形用户界面的RunAs 程序(GUI RunAs) 阅读

基于图形用户界面的RunAs 程序(GUI RunAs)

 2009-06-15 20:07:19 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 环境:VC6 SP5,VS 2005,基于图形用户界面的RunAs 程序(GUI RunAs),Win2k+,Platform SDK 为了在另一个用户上下文中启动程序,我的程序框架代码借鉴了本书的例子,使用说明补充:按“Privilege”确认添加了需要的特权

本文示例源代码或素材下载

环境:VC6 SP5,VS 2005,Win2k+,Platform SDK

为了在另一个用户上下文中启动程序,Win2k 提供了一个命令行程序工具——RunAs。在网上(如www.codeguru.com)也能找到同样功能的程序和代码。有人要求我为这个工具做一个图形用户界面的版本。本文就是为此而写的。为了不“重新发明轮子”,我的工作是基于前人的基础 来实现的。

本文程序具有良好的图形用户界面,免得你在命令行输入太多的参数,如图所示:

基于图形用户界面的RunAs 程序(GUI RunAs)

图片看不清楚?请点击这里查看原图(大图)。

除此之外,你还可以:

在界面中选择目标桌面,在这个目标桌面上运行你想要的程序。我提供了一个桌面列表供选择,双击即可;

密码编辑框左边的按钮用来检查用户名/密码是否正确;

使用用户名右边的按钮可以从本地机器的用户名列表中选择用户,双击即可;

CreateProcessAsUser 和LogonUser 需要如下四个特权:

SeIncreaseQuotaPrivilege;
SeAssignPrimaryTokenPrivilege;
SeChangeNotifyPrivilege;
SeTcbPrivilege;
默认情况下,管理员不需要这些特权。你可以按对话框底下的 Privilege 按钮,在弹出的对话框中选择启用这些特权(只需要做一次重新注销,重新登陆即可)。如果你不喜欢这个图形用户界面的程序,请使用 Martyn Brown 提供的控制台命令行程序——CmdAsUser。

如果不输入用户名和密码,程序将以“SYSTEM”账号启动。

有一个常用程序的清单,你可以选择作为“RunAs”的程序,其内部代码使用LSA 系列 API来处理账号特权,使用LogonUser 和CreateProcessAsUser 完成工作。当你要求以“SYSTEM”账号启动时,要稍微费一些事情——打开系统进程,通过添加 TOKEN_DUPLICATE、TOKEN_ASSIGN_PRIMARY、TOKEN_QUERY权限来调整其令牌并重新打开。

最后,感谢《Programming Server-Side Applications for Mircosoft Windows 2000》一书的作者,我的程序框架代码借鉴了本书的例子。

使用说明补充:按“Privilege”确认添加了需要的特权后,一定要RelLog(注销/重新登录)一次使之生效。

Tags:基于 图形 用户界面

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接