AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wieso startet UAC minimiert?

Ein Thema von QuickAndDirty · begonnen am 25. Okt 2011 · letzter Beitrag vom 25. Okt 2011
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#1

Wieso startet UAC minimiert?

  Alt 25. Okt 2011, 11:04
Hi,
habe eine Funktion die wir in diesem Thread http://www.delphipraxis.net/1115750-post27.html entwickelt haben leicht modifiziert,
um eine Anwednung mit Adminrechten zu starten.

Szenario: sfx.exe soll setup.exe mit Adminrechten starten.
Ergebnis: Auf Vista kommt dann auch die UAC auf...leider aber nur minimiert...ich muss die UAC erst in der Taskleiste anklicken bevor sie den bildschirm abdunkelt und dann nach den bestätigen das Setup startet.

Ich will nicht das die UAC minimiert startet! Wie bekomme ich das ordentlich hin?


Hier der verwendete Code zum Starten:
Delphi-Quellcode:
function ExecAndWait(Filename, Params: string; WindowState: word = SW_SHOWNORMAL; const AdminMode:Boolean = true): boolean;
var
  ShExecInfo: SHELLEXECUTEINFO;
  r : Cardinal;
  const
  SEE_MASK_NOASYNC= $100;
begin
  Result := false;
  if Filename = 'then
    exit;
  if not FileExists(FileName) then
  Begin
    ShowMessage('Datei "' + Filename + '" nicht existent!');
    Exit;
  End;
  ZeroMemory(@ShExecInfo, SizeOf(ShExecInfo));
  ShExecInfo.Wnd := application.Handle;
  ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFO);
  ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOASYNC;
  if AdminMode then
    ShExecInfo.lpVerb := 'runas'
  else
    ShExecInfo.lpVerb := 'open';
  ShExecInfo.lpFile := PChar(Filename);
  ShExecInfo.lpParameters := PChar(Params);
  ShExecInfo.lpDirectory := PChar(ExtractFileDir(Filename));
  ShExecInfo.nShow := WindowState;
  Result := ShellExecuteEx(@ShExecInfo);
  if Result then
  begin
    repeat
      R := MsgWaitForMultipleObjects(1, ShExecInfo.hProcess, False, INFINITE,QS_ALLINPUT);
      if r <> WAIT_OBJECT_0 then
        Application.ProcessMessages;
    until r = WAIT_OBJECT_0;
    CloseHandle(ShExecInfo.hProcess);
  end
  else
    Showmessage('Fehler beim Starten der Anwendung:' + Filename +
                 #13#10'System Fehler: ' + SysErrorMessage(GetLastError));
end;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wieso startet UAC minimiert?

  Alt 25. Okt 2011, 11:23
Hm, das hier war die Lösung...
http://www.delphipraxis.net/92081-fr...llexecute.html

Diese Zeile ist z uändern gewesen

von

  ShExecInfo.Wnd := application.handle; auf

  ShExecInfo.Wnd := application.MainFormHandle;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz