@Reli: Das funktioniert bei mir nicht ganz aber fast. So gehts aber:
Delphi-Quellcode:
procedure RunAsAdminAndWait(hWnd: HWND; aFile: string; aParameters: string);
var
sei: TShellExecuteInfo;
begin
FillChar(sei, SizeOf(sei), 0);
sei.cbSize := sizeof(sei);
sei.Wnd := hWnd;
sei.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_NO_UI;
sei.lpVerb := 'runas'; // nur unter Vista / Win7 ... XP versteht runas als runasuser
sei.lpFile := PChar(aFile);
sei.lpParameters := PChar(aParameters);
sei.nShow := SW_SHOWNORMAL;
if ShellExecuteEx(@sei) then
begin
WaitForSingleObject(sei.hProcess, INFINITE);
CloseHandle(sei.hProcess);
end else
RaiseLastOSError;
end;
Aufpassen muss man ja leider mit der Änderung des Verbs runas zwischen WinXP und Win7.
Viele Grüße...