„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie starte ich ausführbare Dateien aus C++: Eine sicherere Alternative zu „system()“?

Wie starte ich ausführbare Dateien aus C++: Eine sicherere Alternative zu „system()“?

Veröffentlicht am 14.11.2024
Durchsuche:472

  How to Launch Executables from C  :  A Safer Alternative to `system()`?

Ausführbare Dateien aus C starten: Eine Alternative zu system()

In C kann das Starten einer ausführbaren Datei aus einer anderen ausführbaren Datei mithilfe des Systems erfolgen ()-Funktion, aber diese Methode wirft Bedenken hinsichtlich Sicherheit und Systemeffizienz auf. Ein robusterer Ansatz beinhaltet die Verwendung der CreateProcess()-Funktion.

#include 

void startup(LPCTSTR lpApplicationName) {
   STARTUPINFO si;
   PROCESS_INFORMATION pi;

   ZeroMemory(&si, sizeof(si));
   si.cb = sizeof(si);
   ZeroMemory(&pi, sizeof(pi));

  CreateProcess(lpApplicationName, 
         argv[1], 
         NULL, 
         NULL, 
         FALSE, 
         0, 
         NULL, 
         NULL, 
         &si, 
         &pi
    );
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
}

Mit CreateProcess():

  1. Definieren Sie die Startup()-Funktion wie oben gezeigt.
  2. Geben Sie den Pfad zur ausführbaren Datei an lpApplicationName.
  3. Rufen Sie CreateProcess() auf, um die ausführbare Datei zu starten.
  4. Schließen Sie Prozess- und Thread-Handles für die Ressourcenbereinigung.

Fehlerbehebung:

Stellen Sie sicher, dass der angegebene Pfad zur ausführbaren Datei korrekt ist. Der im bereitgestellten Code aufgetretene Fehler ist wahrscheinlich auf einen ungültigen Pfad zu „OpenFile.exe“ zurückzuführen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3