Có một chương trình tự xóaHiểu một chương trình tự xóa trong C++
#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);
}
}
Nếu tôi loại bỏ điều này: CreateProcess(NULL, "net", NULL, NULL, TRUE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi);
nó không thể làm việc.
Có ai có thể giải thích cho tôi cách thức hoạt động của nó không?
Nếu bạn chuyển đổi này để sử dụng wmain và chạy unicode, nó không hoạt động ... Odd. – Benj
Vì chuỗi tên tệp là mã ascii. Có thể bạn thêm _T() quanh khuấy. – pl8787
Haha, yeh tôi đã làm điều đó, nó đã biên dịch, tôi có nghĩa là nó không hoạt động trong thời gian chạy. – Benj