為Delphi程序增加UAC功能(管理員身份運行exe)


為Delphi程序增加UAC功能(管理員身份運行exe)


相關資料:http://bbs.csdn.net/topics/320071356#

操作方法:

在Source\VCL目錄下應該有這樣兩個文件sample.manifest和WindowsXP.rc,可以通過如下方法處理:

1.sample.manifest處理
①打開“sample.manifest”
②修改sample.manifest把其中的
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
改為
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
③另存為requireAdmin.manifest

2.WindowsXP.rc處理
①打開WindowsXP.rc
②將內容編輯成
1 24 "requireAdmin.manifest"
③並另存為requireAdmin.rc

3.編譯資源文件
①新建一個文件夾
②復制brcc32.exe、rw32core.dll、requireAdmin.manifest、requireAdmin.rc到文件夾中。
③新建一個TXT,寫入“brcc32 requireAdmin.rc”,保存后改名為“requireAdmin.bat”
④雙擊requireAdmin.bat

4.放置資源文件
①復制“requireAdmin.res”
②放到“$(BDS)\lib”目錄下

5.設置主題
①打開工程
②打開Project菜單下的Options...菜單項,將Application下面的"Enable runtime themes"的勾選去掉.

6.引用資源
①打開Project菜單下的View Source菜單項

{$R *.res}
下面添加一行
{$R requireAdmin.res}

7.重新編譯即可。

 

 

另一種方法:

相關資科:

    http://bbs.csdn.net/topics/190003519

    http://www.cppblog.com/SpringSnow/archive/2009/04/22/80719.html

 

//以管理員身份運行
procedure RunAsAdmin(hWnd: HWND; aFile: string; aParameters: string);
var
sei: TShellExecuteInfoA;
begin
FillChar(sei, SizeOf(sei), 0);
sei.cbSize := SizeOf(sei);
sei.Wnd := hWnd;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := 'runas';
sei.lpFile := PChar(aFile);
sei.lpParameters := PChar(aParameters);
sei.nShow := SW_SHOWNORMAL;
if not ShellExecuteEx(@sei) then
RaiseLastOSError;
end

 

//把按鈕設置成需要管理員運行樣式,也就是加個圖標到按鈕上
procedure SetElevationRequireState(aControl: TWinControl; Requiered: Boolean);
const
BCM_FIRST = $1600;//Button control messages
BCM_SETSHILED = BCM_FIRST + $000C;
var
lRequired: Integer;
begin
lRequired := Integer(Requiered);
SendMessage(aControl.Handle, BCM_SETSHIELD, 0, lRequired);
end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM