PDA

Просмотр полной версии : Самоудаление файла с помощью .bat


Ru996
05.09.2010, 18:07
Написал функцию,программа и батник самоудается, но не всегда.

Например с рабочего стола XP не получается,новерное путь к удаляемой программе слишком длинный ?как исправить ?и проверте Бат код ,пишу на нем первый раз...
Код:

void selfDel(char* moduleName)
{
char batFile[MAX_PATH]="C:\\delself.bat";
char batLines[MAX_PATH*4];

strcpy(batLines,":Return");
strcat(batLines,"\r\ndel \"");
strcat(batLines,moduleName);

strcat(batLines,"\"\r\nif exist \"");
strcat(batLines,moduleName);

strcat(batLines,"\" goto Return \r\ndel \"");
strcat(batLines,batFile);
strcat(batLines,"\"");

DWORD byte;

HANDLE file = CreateFile(batFile, GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
if(file==INVALID_HANDLE_VALUE)
return;

WriteFile(file,batLines,strlen(batLines),&byte, NULL);

CloseHandle(file);

STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
PROCESS_INFORMATION pi;

CreateProcess(batFile,NULL,NULL,NULL,NULL,NULL,NUL L,NULL,&si,&pi);
}

dark_h2
28.09.2010, 13:30
удалить исполняемый в данное время файл нельзя
создавай и запускай в глубине каталогов еще один который удалит этот обычным удалением