0

可能的重复:
Delphi:在需要时提示 UAC 提升
Delphi 管理员权限 D7 W7

我在 Windows 7 上使用 Delphi 7。我的应用程序中的某些功能需要管理员权限,这需要对物理驱动器的 RAW 访问。如何从源代码提升为管理员?IE 我检查权限:

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 提示。如果我回答“否”,则应用程序根本不会运行。

编辑:或仅从代码中禁用此应用程序(ParamStr(0))的UAC(按下“禁用此应用程序的UAC”按钮后)

4

1 回答 1

3

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

于 2011-08-08T02:14:09.890 回答