可能重复:
Delphi:在需要时提示 UAC 提升
我用 Delphi 7 for Windows 7 编写的应用程序需要管理员权限才能使用某些功能。如何从源代码将其提升为管理员?
我使用以下代码检查用户权限:
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”按钮后)。