Nun, "laufen" ist die eine Sache, aber wie löst du
OS-Abhängige Situationen, z.B. wenn deine App unter normalem Userkontext läuft, und du eine App mit Admin-Rechten starten musst. Ein Beispiel, wie ich meine, wo man das
OS kennen sollte oder muss:
Delphi-Quellcode:
{------------------------------------------------------------------------------}
{-- Anwendung starten, wenn nötig mit Admin-Rechten --}
{------------------------------------------------------------------------------}
function RuWin_ShellExec(aHandle: HWND; FileName, Parameters, Directory: string;
ShowCmd: Integer; AsAdmin, Wait: boolean): Boolean;
var
SEI: TShellExecuteInfo;
begin
FillChar(SEI, SizeOf(SEI), #0);
SEI.cbSize := SizeOf(SEI);
SEI.Wnd := aHandle;
SEI.fMask := SEE_MASK_NOCLOSEPROCESS;
{-Bis zu XP "AsAdmin" automatisch ignorieren-}
if WindowsVersion < WinVista then AsAdmin := false;
if AsAdmin
then SEI.lpVerb := 'runas'
else SEI.lpVerb := 'open';
SEI.lpFile := PChar(FileName);
SEI.lpParameters := PChar(Parameters);
SEI.lpDirectory := PChar(Directory);
SEI.nShow := ShowCmd;
Result := ShellExecuteEx(@SEI);
if Result then
if Wait then begin
if SEI.hProcess > 32 then begin
WaitForInputIdle(SEI.hProcess, INFINITE);
WaitForSingleObject(SEI.hProcess, INFINITE);
end;
end;
CloseHandle(SEI.hProcess);
end;
Oder, wie löst man das besser?