Delphi管理员权限D7 W7

时间:2011-08-08 00:58:16

标签: windows delphi uac administrator elevation

  

可能重复:
  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”按钮之后

1 个答案:

答案 0 :(得分:3)

你不能只是&#34;提升&#34;为您的应用程序执行中期。您需要做的是从应用程序调用另一个应用程序或COM DLL,并在执行此操作时指定所需的权限。