程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 基於圖形用戶界面的RunAs程序(GUI RunAs)

基於圖形用戶界面的RunAs程序(GUI RunAs)

編輯:關於VC++

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

為了在另一個用戶上下文中啟動程序,Win2k 提供了一個命令行程序工具——RunAs。在網上(如www.codeguru.com)也能找到同樣功能的程序和代碼。有人要求我為這個工具做一個圖形用戶界面的版本。本文就是為此而寫的。為了不“重新發明輪子”,我的工作是基於前人的基礎 來實現的。

本文程序具有良好的圖形用戶界面,免得你在命令行輸入太多的參數,如圖所示:

除此之外,你還可以:

在界面中選擇目標桌面,在這個目標桌面上運行你想要的程序。我提供了一個桌面列表供選擇,雙擊即可;

密碼編輯框左邊的按鈕用來檢查用戶名/密碼是否正確;

使用用戶名右邊的按鈕可以從本地機器的用戶名列表中選擇用戶,雙擊即可;

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(注銷/重新登錄)一次使之生效。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved