Heim > Backend-Entwicklung > C++ > Hauptteil

So starten Sie ausführbare Dateien sicher in C: Warum ist CreateProcess() Ihre beste Wahl?

Linda Hamilton
Freigeben: 2024-10-29 18:35:03
Original
994 Leute haben es durchsucht

How to Launch Executable Files Securely in C  : Why CreateProcess() Is Your Best Choice?

Verwenden von CreateProcess() zum Starten ausführbarer Dateien

In diesem Handbuch erfahren Sie, wie Sie eine ausführbare Datei (.exe) aus einer anderen ausführbaren C-Datei heraus öffnen.

Die Fallstricke bei der Verwendung von system()

Bevor wir uns mit der Lösung befassen, ist es wichtig, die Gefahren der Verwendung der system()-Funktion hervorzuheben. System() weist mehrere Nachteile auf:

  • Es ist ressourcenschonend und verlangsamt möglicherweise Ihr Programm.
  • Es untergräbt die Sicherheit, da Sie keine Kontrolle über die ausgeführten Befehle haben. Dies kann dazu führen, dass unbeabsichtigt Schadprogramme mit Administratorrechten ausgeführt werden.
  • Es wird von Antivirensoftware oft als Sicherheitsbedrohung gekennzeichnet.

Einsatz von CreateProcess()

Stattdessen system() empfehlen wir die Verwendung der Funktion CreateProcess(). Mit dieser Funktion können Sie eine ausführbare Datei starten und so einen unabhängigen Prozess erstellen.

#include <windows.h>

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

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

  CreateProcess( lpApplicationName,   // executable path
                 argv[1],        // command line
                 NULL,           // process handle not inheritable
                 NULL,           // thread handle not inheritable
                 FALSE,          // no handle inheritance
                 0,              // no creation flags
                 NULL,           // parent's environment block
                 NULL,           // parent's starting directory 
                 &amp;si,            // STARTUPINFO structure
                 &amp;pi             // PROCESS_INFORMATION structure
                 );

  // Close process and thread handles. 
  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );
}
Nach dem Login kopieren

Beheben des Fehlers

Der aufgetretene Fehler ist wahrscheinlich darauf zurückzuführen, dass Sie nicht die vollständigen Angaben gemacht haben Pfad der ausführbaren Datei. Stellen Sie sicher, dass Sie den vollständigen Pfad einschließlich des Dateinamens angeben.

Das obige ist der detaillierte Inhalt vonSo starten Sie ausführbare Dateien sicher in C: Warum ist CreateProcess() Ihre beste Wahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!