Vista提供的UAC機制,是Vista的新增功能之一。它的主要目的是防止對於操作系統本身的惡意修改。如果想對於Vista的系統設置進行改動,必須通過UAC的驗證才能夠進行。通過這樣的手段,大大提供了系統的安全性。
關於UAC的利弊,網絡上的說法褒貶不一,在這裡就不具體討論了。
對於Delphi程序的影響,UAC主要在於以下幾點:
1、由於UAC機制,Delphi對於系統的操作可能無聲的失敗,而同樣的程序,在2000/X下面可能運行正常。譬如注冊表的改動。。。
2、為了避免這樣的情況,Delphi程序必須支持Vista UAC標注,也就是說,在UAC程序的圖標下面顯示盾牌標志。這樣可以在需要系統更高權限的時候,提醒用戶。
為了讓程序顯示UAC標志,現在看來Vista是通過讀取程序的資源(Resource)裡面的MANIFEST資源,來決定是否顯示“UAC盾牌”。
為了支持Vista,Delphi程序必須在資源裡面嵌入MANIFEST信息。
1、首先編輯一個文件,內容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
保持為UAC.manifest,這裡文件是隨意的。特別注意紅色的“requireAdministrator”,這個表示程序需要管理員(Administrator)才能正常運行。
2、然後編輯一個RC文件,名為uac.rc
1 24 UAC.manifest
其中:
1-代表資源編號
24-資源類型為RTMAINIFEST
UAC.manifest-前面的文件名稱
3、用brcc32編譯這個rc文件為res文件
brcc32 uac.rc -fouac.res //注:brcc32.exe在DelphiX\Bin目錄中
4、在程序裡面加入
{$R uac.res}
讓Delphi編譯的時候,把uac.res編譯進exe文件
5、把文件放到vista裡面運行,就會看程序圖標下面顯示UAC盾牌標志了