我在 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”按钮后)