Einzelnen Beitrag anzeigen

Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

Benutzerkontensteuerung für Admin Rechte startet nur im Hintergrund

  Alt 20. Mär 2012, 08:03
Moin.

Ich starte aus meiner Anwendung heraus bedingt eine weitere von mir geschriebene Kommandozeilenanwendung. Anwendung 1 soll auf die Beendigung der Kommandozeilenanwendung warten. Das habe ich so gelöst:

Delphi-Quellcode:
  FillChar(ExecuteInfo, SizeOf(ExecuteInfo), 0);
  ExecuteInfo.cbSize := SizeOf(TShellExecuteInfo);

  with ExecuteInfo do
  begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    wnd := Application.Handle;
    lpFile := PChar('App.exe');
    // lpParameters := PChar('-t');
    lpDirectory := PWideChar(ExtractFilePath(Application.ExeName) + '..\App\');
    nShow := SW_SHOWMAXIMIZED;
  end;

  if ShellExecuteEx(@ExecuteInfo) then
  begin
    WaitForSingleObject(ExecuteInfo.hProcess, INFINITE);

    GetExitCodeProcess(ExecuteInfo.hProcess, ExitCode);
...
...
Die Kommandozeilenanwendung brauch Adminrechte und fordert diese an. Das Maifest sieht so aus:

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="Private.Unknown.MySampleApp"
    type="Win32"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>
Prinzipiell funktioniert das auch alles. Nur kommt der Benutzerkontensteuerungsdialog, der die Adminrechte anfordert nicht automatisch in den Vordergrund. Er blinkt nur unten in der Taskleiste vor sich hin und man muss in mit einem Klick in den Vordergrund holen.

Wie kann ich erreichen das er automatisch im Vordergrund erscheint wenn ich meine Kommandozeilenanwendung aus meiner anderen Anwendung heraus starte?
  Mit Zitat antworten Zitat