Zrozumienie samo-usuwającego się programu w C ++
Istnieje program usuwania własnego
<code>#include <windows.h> #include <stdio.h> void main(int argc, char* argv[]) { STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; si.cb = sizeof(si); if (argc == 1) { SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; CopyFile(argv[0], "1.exe", FALSE); MoveFile(argv[0], "2.exe"); CreateFile("1.exe", 0, FILE_SHARE_READ, &sa, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL); CreateProcess(NULL, "1.exe x", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); } else if (argc == 2) { while(!DeleteFile("2.exe")); CreateProcess(NULL, "net", NULL, NULL, TRUE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi); } } </code>
Jeśli to usunę:CreateProcess(NULL, "net", NULL, NULL, TRUE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi);
to nie działa.
Czy ktoś mógłby mi wyjaśnić, jak to działa?