процедура перезапуска explorer.exe

Тема в разделе "WASM.BEGINNERS", создана пользователем vnb, 27 май 2009.

  1. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    Требуется перезапустить explorer.exe. Получить хендл(CreateFile) я понимаю как, а вот выгрузить его затрудняюсь. Не могу правильно подобрать АПИ-функции.
    Подскажите, с помощью каких функций АПИ можно провернуть перезапуск explorer.exe?
     
  2. dimax

    dimax New Member

    Публикаций:
    0
    Регистрация:
    21 май 2009
    Сообщения:
    11
    А CreateProcess(...) не поможет?
     
  3. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    А выгрузить с помощью чего?
     
  4. maverick

    maverick New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2008
    Сообщения:
    148
    TerminateProcess?
     
  5. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    Понял, спасибо. А ReOpenFile можно использоать для таких целей?
     
  6. Folk Acid

    Folk Acid New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2005
    Сообщения:
    432
    Адрес:
    Ukraine
    Кстати, если у кого не доступна фишка fast user switching, то она легко эмулируется убиением explorer.exe и запуском из под другого аккаунта. обновляется весь рабочий стол. не по теме, но можем кому-то будет интересно
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    vnb
    дабы оградить тебя от непременного стеба скажу сразу - работа с файлами и работа с процессами - это две совершенно разные вещи. Ты пытаешься че-то сделать с файлом, а тебе надо с процессом. Копай в сторону OpenProcess
     
  8. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    С помощью CreateFile я планировал получить только хендл explorer.exe, но в общем-то в чем неудобство я уже понял. Тем более хендл должен быть с правом доступа PROCESS_TERMINATE.
    Мне почему-то казалось что эта ветка для начинающих и неопытных... А по сему и стеб был-бы не уместен. По большому счету, на поверку, кроме этого форума и обратиться то некуда начинающему. А здесь можно получить качестенную помощь. :)
    MSoft, отдельное Вам спасибо, не раз мне помогли. Дай бог Вам здоровья.
     
  9. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    vnb
    Не-е-е, открывая файл ф-ей CreateFile, ты получаешь хэндл открытого файла, а открывая процесс с названием explorer.exe ф-ей OpenProcess, ты получаешь хэндл этого процесса.
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    vnb
    План действий

    CreateToolhelp32Snapshot
    Process32First/Process32Next - ищем explorer.exe, точнее, его PID
    OpenProcess - открываем handle explorer.exe по его PID
    TerminateProcess - завершаем процесс по хендлу
    CreateProcess (0, "explorer.exe", .... - стартуем новый эксплорер
     
  11. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    Great, по Вашему плану получилось перезапустить explorer.exe. Все работает. Вопрос: с помощью CreateProcess я запускаю экплорер с флажком класса приоритета NORMAL_PRIORITY_CLASS. И все работает. Не будел ли дальнейшем проблем с перезапуском других процессов с таким кл.приор. по умолчанию? Т.е. если использовать процедуру перезапуска для универсальных целей?
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
     
  13. vnb

    vnb New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2008
    Сообщения:
    22
    Вообщем после долгих инсинуаций я пришел к выводу что в перезапуске нужно использовать CreateProcess после убиения експлоуэра. ExitStatus у меня 0, но запуска с помощью винлогон происходит через раз, может и запуститься с окном. А с CreateProcess все стабильно.