- Сообщения
- 107
- Реакции
- 80
При запуске программа запрашивает как она будет открыта ( От Администратора или от Юзера )
Код помещаем в FormCreate
Код:
if not IsUserAnAdmin() then
begin
if MessageBox(Handle, 'Запуститься от админа?', 'Привилегии', mb_YesNo) = 6 then
begin
RunAsAdministrator(ParamStr(0));
halt;
end
else
label1.Caption := 'User';
end
else
Label1.Caption := 'Admin';
Код:
// процедура запуска с правами админа
procedure RunAsAdministrator(const source: string);
var
shExecInfo: PSHELLEXECUTEINFOW;
begin
New(shExecInfo);
shExecInfo^.cbSize := sizeof(SHELLEXECUTEINFO);
shExecInfo^.fMask := 0;
shExecInfo^.Wnd := 0;
shExecInfo^.lpVerb := 'runas';
shExecInfo^.lpFile := PWideChar(ExtractFileName(source));
shExecInfo^.lpParameters := '';
shExecInfo^.lpDirectory := PWideChar(ExtractFilePath(source));
shExecInfo^.nShow := SW_SHOWNORMAL;
shExecInfo^.hInstApp := 0;
ShellExecuteex(shExecInfo);
Dispose(shExecInfo);
shExecInfo := nil;
end;