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);
}
Например с рабочего стола 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);
}