Delphi与Windows 7下的用户账户控制(UAC)机制
WIN7/WIN8/WIN10, Vista提供的UAC機(jī)制,它的主要目的是防止對于操作系統(tǒng)本身的惡意修改。
對于Delphi程序的影響,UAC主要在于以下幾點(diǎn):
1、由于UAC機(jī)制,Delphi對于系統(tǒng)的操作可能無聲的失敗,而同樣的程序,在2000/X下面可能運(yùn)行正常。譬如注冊表的改動(dòng)。。。
2、為了避免這樣的情況,Delphi程序必須支持Vista UAC標(biāo)注,也就是說,在UAC程序的圖標(biāo)下面顯示盾牌標(biāo)志。這樣可以在需要系統(tǒng)更高權(quán)限的時(shí)候,提醒用戶。
為了讓程序顯示UAC標(biāo)志,現(xiàn)在看來Vista是通過讀取程序的資源(Resource)里面的MANIFEST資源,來決定是否顯示“UAC盾牌”。
為了支持UAC,Delphi程序必須在資源里面嵌入MANIFEST信息。
1、首先編輯一個(gè)文件,內(nèi)容如下:
保持為UAC.manifest,這里文件是隨意的。特別注意紅色的“requireAdministrator”,這個(gè)表示程序需要管理員(Administrator)才能正常運(yùn)行。
?UAC Manifest 選項(xiàng):
<requestedExecutionLevel level="asInvoker" uiAccess="false" /><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /><requestedExecutionLevel level="highestAvailable" uiAccess="false" />
2、然后編輯一個(gè)RC文件,名為uac.rc
1 24 UAC.manifest其中:<p>1-代表資源編號,24-資源類型為RTMAINIFEST,UAC.manifest-前面的文件名稱 </p> 3、用brcc32編譯這個(gè)rc文件為res文件
brcc32 uac.rc -fouac.res
其中 -fo 設(shè)置輸出文件名
4、在Project程序里面加入:
{$R uac.res}
或者將3,4合并為:
{$R 'uac.res' 'uac.rc'},但是必須將uac.rc添加到項(xiàng)目中去。
讓Delphi編譯的時(shí)候,把uac.res編譯進(jìn)exe文件
程序圖標(biāo)下面顯示UAC盾牌標(biāo)志了。
5、注意,這個(gè)程序不能運(yùn)行在subst 虛擬驅(qū)動(dòng)器上,否則會(huì)提示“指定路徑不存在”
6、在編譯時(shí)若產(chǎn)生錯(cuò)誤:在project->options->application->enable runtime themes前面的勾取消,再編譯就可以了!
轉(zhuǎn)載于:https://www.cnblogs.com/xieyunc/p/9126516.html
總結(jié)
以上是生活随笔為你收集整理的Delphi与Windows 7下的用户账户控制(UAC)机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 莫干山科技木大家觉得好不好,靠谱吗?
- 下一篇: 怎么解决xp系统不能安装NET Fram