2 Stimmen

Ausblick: Kann eine EXE die Bestätigung des Benutzers umgehen, wenn sie eine andere EXE aufruft?

Ich habe 2 Anwendungen in Delphi geschrieben. Die erste Exe (mit einer Benutzeroberfläche) ruft eine andere mit ShellExecuteEx() auf, die als Hintergrundprozess läuft.

Wenn die erste Exe die zweite aufruft, geschieht eines der beiden folgenden Dinge:

  1. Wenn ich mich als Administrator anmelde, wird ein UAC-Dialogfeld mit den Aufforderungen zum Zulassen/Abbrechen angezeigt. Wenn ich "Zulassen" wähle, wird die Ausführung fortgesetzt.

  2. Wenn ich mich als Nicht-Administrator anmelde, wird ein Dialogfeld mit den Administrator-Anmeldeinformationen angezeigt, und ich muss den Benutzernamen und das Kennwort des Administrators eingeben, um fortzufahren.

In beiden Fällen möchte ich, dass die zweite Exe ohne Benutzereingriff ausgeführt wird. Wie kann ich das möglich machen?

Und ja, ich habe versucht, die ElevateCreateProcess-Abschwächung anzuwenden, wie vom SUA-Tool vorgeschlagen, aber es scheint nicht zu funktionieren - das Verhalten ist wie zuvor.

Vielen Dank für Ihre Hilfe.

1voto

Paul Alexander Punkte 31302

Die erste EXE muss mit erhöhten Rechten gestartet werden, um die zweite ohne UAC-Eingabeaufforderung aufzurufen. Oder... Sie können ein Manifest für die zweite EXE verwenden, das Vista mitteilt, dass es sich nicht um ein Admin-Tool handelt und nur mit dem aktuellen Benutzer ausgeführt werden soll.

Gespeichert als Second.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Vista UAC Support -->
<ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
  <ms_asmv2:security>
    <ms_asmv2:requestedPrivileges>
      <ms_asmv2:requestedExecutionLevel level="asInvoker" />
    </ms_asmv2:requestedPrivileges>
  </ms_asmv2:security>
</ms_asmv2:trustInfo>
</assembly>

1voto

HeartWare Punkte 6705

Wie lautet der Dateiname Ihrer zweiten Datei?

Vista geht davon aus, dass für bestimmte Dateinamen Administratorrechte erforderlich sind - vor allem für Dateien mit dem Namen "setup" oder "install".

Außerdem: Wenn Sie ein Programm mit Administratorrechten ausführen möchten, ohne dass Vista eine UAC-Eingabeaufforderung ausgibt, dann haben Sie Pech. Das wäre eine ernsthafte Verletzung der Sicherheit, wenn das möglich wäre.

Ist Ihr zweites Programm brauchen Administrator-Rechte?

Was passiert, wenn Sie versuchen, das zweite Programm direkt im Explorer auszuführen? Eine UAC-Eingabeaufforderung? Wenn ja, dann versucht Vista, es als Administrator auszuführen, entweder aufgrund des Dateinamens der Datei oder weil ein Manifest (intern oder extern) es verlangt.

0voto

Jason Watts Punkte 1088

Ja, Sie benötigen ein Anwendungsmanifest, das in etwa wie folgt aussieht

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>   

    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="UacTest"   type="win32"/>   
       <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">   
       <security>  
          <requestedPrivileges>  
             <requestedExecutionLevel level="highestAvailable"/>    
          </requestedPrivileges>  
       </security>  
    </trustInfo>  
  </assembly> 

Beachten Sie den "requestedExecutionLevel"-Tag

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X