ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Як зробити щоб запущений exe сам себе вилучив ?
         

     

    Інформатика, програмування

    Як зробити щоб запущений exe сам себе вилучив?

    Шітц Віталій

    Як зробити щоб запущений exe сам себе вилучив? Можна сгегеріровать BAT-файл і виконати його, а можна і по іншому:

    Цей код вимагає, щоб була визначена мінлива оточення COMSPEC, працює на всіх ОС Windows.

    Після виклику функції потрібно негайно виходити з програми, інакше не спрацює.

    Автор Tony Varnas.        

    BOOL SelfDelete ()   

    (   

    TCHAR szFile [MAX_PATH],   szCmd [MAX_PATH];      

    if ((GetModuleFileName (0, szFile, MAX_PATH)! = 0)   & &   

    (GetShortPathName (szFile, szFile, MAX_PATH)! = 0))   

    (   

    lstrcpy (szCmd, "/ c del   ");   

    lstrcat (szCmd, szFile);   

    lstrcat (szCmd, ">>   NUL ");      

    if ((GetEnvironmentVariable ( "ComSpec", szFile, MAX_PATH)! = 0)   & &   

    ((INT) ShellExecute (0,0, szFile, szCmd, 0, SW_HIDE)> 32))   

    return TRUE;   

    )   

    return FALSE;   

    )     

    Наступний код працює тільки під NT, від Gary Nebbett:        

    include      

    int main (int argc, char * argv [])   

    (   

    char buf [MAX_PATH];   

    HMODULE module;   

      

    module = GetModuleHandle (0);   

    GetModuleFileName (module, buf,   MAX_PATH);   

    CloseHandle ((HANDLE) 4);   

      

    __asm   

    (   

    lea eax, buf   

    push 0   

    push 0   

    push eax   

    push ExitProcess   

    push module   

    push DeleteFile   

    push UnmapViewOfFile   

    ret   

    )   

      

    return 0;   

    )     

    Ну а це - варіант попереднього, але під Win9x, автор Tony Varnas.        

    int main (int argc, char * argv [])   

    (   

    char buf [MAX_PATH];   

    HMODULE module;   

      

    module = GetModuleHandle (0);   

    GetModuleFileName (module, buf,   MAX_PATH);      

    __asm   

    (   

    lea eax, buf   

    push 0   

    push 0   

    push eax   

    push ExitProcess   

    push module   

    push DeleteFile   

    push FreeLibrary   

    ret   

    )   

      

    return 0;   

    )     

    Ну і два останніх в одній функції:        

    void SelfDelete ()   

    (   

    char buf [MAX_PATH];   

    HMODULE module;   

    DWORD fnFreeOrUnmap;   

      

    module = GetModuleHandle (0);   

    GetModuleFileName (module, buf,   MAX_PATH);      

    // На випадок Win9x   

    if (0x80000000 &   GetVersion ())   

    (   

    fnFreeOrUnmap = FreeLibrary;   

    )   

    // для ядра WinNT   

    else   

    (   

    fnFreeOrUnmap =   UnmapViewOfFile;   

    CloseHandle ((HANDLE) 4);   

    )      

    __asm   

    (   

    lea eax, buf   

    push 0   

    push 0   

    push eax   

    push ExitProcess   

    push module   

    push DeleteFile   

    push fnFreeOrUnmap   

    ret   

    )   

    )     

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.rsdn.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status