Возможные дубликаты:
Delphi: запрос UAC повышение уровня при необходимости
Права администратора Delphi D7 W7
Я использую Delphi 7 в Windows 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 для этого приложения»