WIN7, Vista提供的UAC機制,它的主要目的是防止對于操作系統(tǒng)本身的惡意修改。 對于Delphi程序的影響,UAC主要在于以下幾點: 1、由于UAC機制,Delphi對于系統(tǒng)的操作可能無聲的失敗,而同樣的程序,在2000/X下面可能運行正常。譬如注冊表的改動。。。 2、為了避免這樣的情況,Delphi程序必須支持Vista UAC標注,也就是說,在UAC程序的圖標下面顯示盾牌標志。這樣可以在需要系統(tǒng)更高權(quán)限的時候,提醒用戶。 為了讓程序顯示UAC標志,現(xiàn)在看來Vista/Windows 7是通過讀取程序的資源(Resource)里面的MANIFEST資源,來決定是否顯示“UAC盾牌”。 為了支持UAC,Delphi程序必須在資源里面嵌入MANIFEST信息。 1、首先編輯一個文件,內(nèi)容如下: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="naily.pdbm.exe" processorArchitecture="x86" version="5.1.0.0" type="win32"/> <description>NAILY Soft</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> <!-- Identify the application security requirements. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> 保存為UAC.manifest 2、然后編輯一個RC文件,名為uac.rc 1 24 UAC.manifest 其中: 1-代表資源編號 24-資源類型為RTMAINIFEST UAC.manifest-前面的文件名稱 3、用brcc32編譯這個rc文件為res文件 brcc32 uac.rc -fouac.res 4、在程序里面加入 {$R uac.res} 讓Delphi編譯的時候,把uac.res編譯進exe文件 5、程序圖標下面顯示UAC盾牌標志了。 PS:在編譯時若產(chǎn)生錯誤:在project-application-enable runtime themes前面的勾取消,再編譯就可以了。。。 |
|