可能重复:
Delphi: Prompt for UAC elevation when needed
Delphi Administrator rights D7 W7
我在Windows 7上使用Delphi 7.我的应用程序中的某些功能需要管理员权限,需要RAW访问物理驱动器。如何从源代码升级到管理员? I.E. 我通过以下方式获得权利:
function IsUserAdmin : boolean;
const CAdminSia : TSidIdentifierAuthority = (value: (0, 0, 0, 0, 0, 5));
var sid : PSid;
ctm : function (token: dword; sid: pointer; var isMember: bool) : bool; stdcall;
b1 : bool;
begin
result := false;
ctm := GetProcAddress(LoadLibrary('advapi32.dll'), 'CheckTokenMembership');
if (@ctm <> nil) and AllocateAndInitializeSid(CAdminSia, 2, $20, $220, 0, 0, 0, 0, 0, 0, sid) then
begin
result := ctm(0, sid, b1) and b1;
FreeSid(sid);
end;
end;
如果应用程序以管理员身份启动,则返回True,否则返回False。 现在,如果结果为False,我想自动提升为管理员。
我尝试向管理员提升清单,但是如果我启动应用程序,那么我会看到UAC提示符。如果我回答“否”,则应用程序根本不会运行。
编辑:或者也仅从代码中禁用此应用程序的UAC(ParamStr(0))(在按下“为此应用程序禁用UAC”按钮之后
答案 0 :(得分:3)
你不能只是&#34;提升&#34;为您的应用程序执行中期。您需要做的是从应用程序调用另一个应用程序或COM DLL,并在执行此操作时指定所需的权限。