?

修改Manifest控制權限

2016-11-26 05:19
網絡安全和信息化 2016年5期
關鍵詞:普通用戶對話框賬號

引言:在Windows 7環境下,當使用普通用戶賬號運行某些應用程序時,系統會彈出對話框要求輸入管理員賬號和密碼,否則無法運行。但同一個應用程序在Windows XP環境下卻能基本運行。為了安全起見,公司電腦一般都不會賦予用戶賬號管理員權限,這樣很多程序無法在Windows 7下運行。我們可以通過修改Manifest文件,來控制應用程序的運行權限。

在Windows 7環境下,當使用普通用戶賬號運行某些應用程序(程序圖標顯示有盾牌)的時候,系統會彈出對話框,要求輸入管理員賬號和密碼,否則無法運行。也就是說,這類應用程序只允許管理員運行,普通用戶則完全無法運行。

但同一應用程序在Windows XP環境下卻能基本運行,只是部分功能因沒有管理員權限而無法使用。為安全起見,公司電腦一般都不會賦予用戶賬號管理員權限,

這樣一來,很多程序都會無法在Windows 7下運行,會造成相當的不便。這是由于Windows的UAC(用戶賬戶控制)安全機制導致的。

用戶賬戶控制機制

Windows從Vsita開始引入用戶賬戶控制機制,當應用程序需要進行一些操作系統層面,或者影響其他用戶操作的設置,比如更改控制面板設置、刪除系統文件、修改注冊表等,操作系統便會彈出對話框,提示用戶輸入管理員賬號密碼,獲得許可后方能繼續。

UAC的這種臨時提升用戶權限的設計,大大提高了Windows的安全性,應用程序的一些操作必須要獲取到管理員用戶的許可方能運行,這樣可以防止惡意軟件和間諜軟件在未經許可的情況下,在計算機上運行安裝或者對計算機進行更改。

凡是圖標顯示有盾牌的可執行文件,都需要管理員權限才能完全正常地運行,但也有可能該應用程序只是部分功能需要管理員權限而已。很多情況下,我們只需使用應用程序的一般功能,所以我們需要強制可執行文件以普通用戶權限運行。

默認情況下,可執行文件EXE是以當前用戶權限運行的,那么操作系統是如何知道應用程序需要使用管理員權限運行而彈出對話框提示用戶呢?

操作系統是通過讀取Manifest清單文件來獲取EXE文件運行所需的權限。Manifest清單文件是一個后綴為.manifest的XML文件,保存了應用程序的配置元數據。該Manifest可作為文件存儲在應用程序相同的目錄下,也可作為一種資源嵌入在可執行文件內部。

修改Manifest文件

我們可以通過修改Manifest文件,來控制應用程序的運行權限。以下為外置和內置兩種清單文件的修改方法。

1.外置同名Manifest文件

以軟件“一號店在線客服”為例,軟件安裝后,修改程序目錄(C:Program Files (x86)yhd)的文件夾權限,編輯Users用戶組,添加“修改和寫入”權限。在“高級”菜單中,勾選“更改權限→使用可從此對象繼承的權限替代所有子對象項目”。然后以普通用戶賬號登錄,運行主程序(im-desktop.exe),系統彈出UAC對話框。

用記事本編輯跟程序位于同一目錄的im-desktop.exe.manifest文件(如圖1)

配置中有一個requestedExecutionLevel項,這個項用于配置當前應用請求的執行權限級別。這個項有3個值可供選擇:

asInvoker:應用程序就是以當前的權限運行。highestAvailable:應用程序以當前用戶可以獲得的最高權限運行。requireAdministrator:應用程序僅以系統管理員權限運行。

所以,我們只需要將requestedExecutionLevel項目設置為asInvoker或者highestAvailable,程序就能以當前用戶賬號正常運行了。其中,highestAvailable和requireAdministrator這兩個選項都可以提示用戶獲取系統管理員權限。

圖1 編輯im-desktop.exe.manifest文件

圖2 點擊左側的Manifest→1:1033

兩個選項的區別在哪里呢?它們的區別在于,如果我們不是以管理員賬戶登錄,而應用程序設置為requireAdministrator,那 么應用程序就直接運行失敗,無法啟動,也就是強制程序以管理員賬號運行。而如果設置為highestAvailable,則應用程序可以運行成功,只是以當前賬號的最高權限運行而不是系統管理員權限運行。另外,直接將該Manifest文件刪除也可以強制操作系統以當前用戶運行。

2.可執行文件內置Manifest文件

以軟件“美圖秀秀”為例,安裝軟件后,使用普通賬號運行會彈出UAC對話框,

因其Manifest清單文件內置在EXE文件里,無法直接編輯。

(1)首先下載并安裝可執行文件編輯軟件Resource Hacker(http://www.angusj.com/resourcehacker/)。

(2)接著,用管理員賬號運行Resource Hacker

軟件(鼠標右鍵主程序以管理員身份運行),然后點擊“File→ Open”,選 擇 美圖秀秀的主程序Xiuxiu.exe,點擊左側的資源列表中的 Manifest→ 1:1033(如圖2)。這時候就看到了內置在EXE文件中的清單文件內容了,該文件內容和需要修改的內容都跟之前外置的清單文件一樣,只要將requestedExecutionLevel項目修改為asInvoker或者highestAvailable即可。

(3)修改后,點擊工具欄中的Compile Script,接著點擊Save,程序會自動備份原文件為XiuXiu_original.exe。

(4)注銷并重新登錄一下當前的普通用戶,運行xiuxiu.exe,程序就可以順利運行了。

注意事項

現在,越來越多的應用程序運行時需要提升權限到管理員級別,這樣可以提高軟件的使用體驗。但是,企業辦公電腦由于安全性和管理的需要,一般不允許賦予普通用戶本機管理員的權限,這樣一來,很多軟件都無法使用。通過關閉UAC功能或者修改Manifest清單文件,都可以令普通用戶能基本運行這類應用程序。不過,關閉UAC后,即與Windows XP環境軟件的運行機制類似,只能通過鼠標右鍵選擇“運行為”來提升運行權限,而且基于安全性的考慮,不建議關閉UAC功能。

需要注意的是,修改清單文件后,不能保證軟件可以百分百正常運行,修改后有時需要注銷再登錄當前用戶或者重啟系統才會生成。還有,清單文件修改前要注意對EXE文件和Manifest文件原文件做好備份。

猜你喜歡
普通用戶對話框賬號
A quantitative analysis method for contact force of mechanism with a clearance joint based on entropy weight and its application in a six-bar mechanism
彤彤的聊天賬號
施詐計騙走游戲賬號
正?;謴吞摂M機
即使是普通用戶也需要備一張家庭影院入門攻略:影音調校工具篇1
Bootlace Worms’Secret etc.
What Is Beauty?
我國社交媒體賬號的對外傳播之道——以“人民日報”Facebook賬號“特朗普訪華”議題報道為例
Numerical Analysis of Refueling Drogue Oscillation During Refueling Docking
淺談VB的通用對話框《CommonDialog》控件的使用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合