Dalam panduan ini, kami akan meneroka cara membuka fail boleh laku (.exe) dari dalam boleh laku C yang lain.
Sebelum mendalami penyelesaian, adalah penting untuk menyerlahkan bahaya menggunakan fungsi sistem(). System() mempamerkan beberapa kelemahan:
Sebaliknya system(), kami mengesyorkan menggunakan fungsi CreateProcess(). Fungsi ini membolehkan anda melancarkan fail boleh laku, mencipta proses bebas.
#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 ); }
Ralat yang anda hadapi mungkin berpunca daripada fakta bahawa anda tidak menyatakan sepenuhnya laluan fail boleh laku. Pastikan anda memberikan laluan lengkap, termasuk nama fail.
Atas ialah kandungan terperinci Cara Melancarkan Fail Boleh Laku Dengan Selamat dalam C : Mengapa CreateProcess() Adalah Pilihan Terbaik Anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!