Вы можете использовать ShellExecute для запуска вашей внешней утилиты. Обязательно включите значок «Щит» в действие, чтобы указать, что для него потребуются повышенные разрешения. Затем пользователю будет предложено сообщить, что ему требуются специальные разрешения.
Одна вещь, которую вы можете сделать, это добавить флаги в ваше собственное приложение, которые указывают, что оно будет изменять разрешения. А затем снова запустите ваше приложение со специальными флагами.
Например, если ваша заявка
MyApplication.exe
Вы можете породить
MyApplication.exe / setfiles
, который только устанавливает ассоциации файлов и затем завершается. Таким образом, вам нужно будет отправить только один исполняемый файл.
function RunAsAdmin(hWnd: HWND; filename: string; Parameters: string): Boolean;
var
sei: TShellExecuteInfo;
begin
ZeroMemory(@sei, SizeOf(sei));
sei.cbSize := SizeOf(TShellExecuteInfo);
sei.Wnd := hwnd;
sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := PChar('runas');
sei.lpFile := PChar(Filename); // PAnsiChar;
if parameters <> '' then
sei.lpParameters := PChar(parameters); // PAnsiChar;
sei.nShow := SW_SHOWNORMAL; //Integer;
Result := ShellExecuteEx(@sei);
end;