Należy zawsze unikać system()
ponieważ
- Jest zasobem ciężki
- pokonuje zabezpieczenie - nie znam cię, że to ważna komenda lub robi to samo na każdym systemie, można nawet uruchamiać programy, których nie planowałeś uruchomić. Niebezpieczeństwo polega na tym, że po bezpośrednim uruchomieniu programu otrzymuje on te same uprawnienia, co program, co oznacza, że jeśli na przykład działasz jako administrator systemu, to złośliwy program, który właśnie został nieumyślnie uruchomiony, działa również jako administrator systemu. . Jeśli to nie przestraszy cię głupio, sprawdź tętno.
- Programy antywirusowe go nienawidzą, Twój program może zostać oznaczony jako wirus.
Powinieneś użyć CreateProcess().
Możesz użyć Createprocess(), aby tylko uruchomić .exe i utworzyć dla niego nowy proces. Aplikacja będzie działać niezależnie od aplikacji wywołującej.
Oto przykład kiedyś w jednym z moich projektów:
#include <windows.h>
VOID startup(LPCTSTR lpApplicationName)
{
// additional information
STARTUPINFO si;
PROCESS_INFORMATION pi;
// set the size of the structures
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// start the program up
CreateProcess(lpApplicationName, // the path
argv[1], // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi // Pointer to PROCESS_INFORMATION structure (removed extra parentheses)
);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
EDIT: Błąd otrzymujesz dlatego trzeba podać ścieżkę do pliku .exe nie tylko nazwa. Openfile.exe prawdopodobnie nie istnieje.
Jaki jest błąd? W każdym razie, na przeczucie, [system man] (http://linux.die.net/man/3/system) - spróbuj '#include' –
RageD
Możesz wypróbować 'fopen()'. To otworzy twój .exe. –
RageD, dziękuję za to, że został skompilowany, ale program nadal nie otwiera openfile.exe –