Требуется перезапустить explorer.exe. Получить хендл(CreateFile) я понимаю как, а вот выгрузить его затрудняюсь. Не могу правильно подобрать АПИ-функции. Подскажите, с помощью каких функций АПИ можно провернуть перезапуск explorer.exe?
Кстати, если у кого не доступна фишка fast user switching, то она легко эмулируется убиением explorer.exe и запуском из под другого аккаунта. обновляется весь рабочий стол. не по теме, но можем кому-то будет интересно
vnb дабы оградить тебя от непременного стеба скажу сразу - работа с файлами и работа с процессами - это две совершенно разные вещи. Ты пытаешься че-то сделать с файлом, а тебе надо с процессом. Копай в сторону OpenProcess
С помощью CreateFile я планировал получить только хендл explorer.exe, но в общем-то в чем неудобство я уже понял. Тем более хендл должен быть с правом доступа PROCESS_TERMINATE. Мне почему-то казалось что эта ветка для начинающих и неопытных... А по сему и стеб был-бы не уместен. По большому счету, на поверку, кроме этого форума и обратиться то некуда начинающему. А здесь можно получить качестенную помощь. MSoft, отдельное Вам спасибо, не раз мне помогли. Дай бог Вам здоровья.
vnb Не-е-е, открывая файл ф-ей CreateFile, ты получаешь хэндл открытого файла, а открывая процесс с названием explorer.exe ф-ей OpenProcess, ты получаешь хэндл этого процесса.
vnb План действий CreateToolhelp32Snapshot Process32First/Process32Next - ищем explorer.exe, точнее, его PID OpenProcess - открываем handle explorer.exe по его PID TerminateProcess - завершаем процесс по хендлу CreateProcess (0, "explorer.exe", .... - стартуем новый эксплорер
Great, по Вашему плану получилось перезапустить explorer.exe. Все работает. Вопрос: с помощью CreateProcess я запускаю экплорер с флажком класса приоритета NORMAL_PRIORITY_CLASS. И все работает. Не будел ли дальнейшем проблем с перезапуском других процессов с таким кл.приор. по умолчанию? Т.е. если использовать процедуру перезапуска для универсальных целей?
Вообщем после долгих инсинуаций я пришел к выводу что в перезапуске нужно использовать CreateProcess после убиения експлоуэра. ExitStatus у меня 0, но запуска с помощью винлогон происходит через раз, может и запуститься с окном. А с CreateProcess все стабильно.