有一個自我刪除程序瞭解在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);
}
}
如果我刪除此:CreateProcess(NULL, "net", NULL, NULL, TRUE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi);
它不能正常工作。
任何人都可以向我解釋它是如何工作的?
如果將它轉換爲使用wmain和運行unicode的,這是行不通的......奇怪。 – Benj 2012-04-25 16:34:23
因爲文件名字符串爲ASCII編碼。也許你可以圍繞stirng加_T()。 – pl8787 2012-04-25 16:38:27
哈哈,葉我這樣做,它沒有編制,我的意思是它在運行時不工作。 – Benj 2012-04-25 16:39:05