Maison >développement back-end >C++ >Comment lancer des fichiers exécutables en toute sécurité en C : Pourquoi CreateProcess() est votre meilleur choix ?
Dans ce guide, nous explorerons comment ouvrir un fichier exécutable (.exe) à partir d'un autre exécutable C.
Avant d'approfondir la solution, il est crucial de souligner les dangers de l’utilisation de la fonction system(). System() présente plusieurs inconvénients :
Au lieu de system(), nous vous recommandons d'utiliser la fonction CreateProcess(). Cette fonction vous permet de lancer un fichier exécutable, créant ainsi un processus indépendant.
#include <windows.h> VOID startup(LPCTSTR lpApplicationName) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &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 &si, // STARTUPINFO structure &pi // PROCESS_INFORMATION structure ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); }
L'erreur que vous avez rencontrée provient probablement du fait que vous n'avez pas spécifié le fichier complet chemin du fichier exécutable. Assurez-vous de fournir le chemin complet, y compris le nom du fichier.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!