Kardinalli |
23-05-2009 12:34 1125594 |
Закрытие апплета из bat файла.
Как убить процесс понятно. А вот как убить апплет? При этом не убить rundll32, на котором еще может что-то висеть? Например, как принудительно закрыть окно апплета "Установка и удаление программ" appwiz.cpl ?.
|
Kardinalli, как вы уже выяснили, аплет не имеет собственного процесса, поэтому невозможно его убить, не затронув другие процессы. Возможно, нужно смотреть в сторону WSH, либо AutoIt в соседнем форуме - это будет проще, наверное.
|
Kardinalli |
23-05-2009 22:22 1125934 |
Vadikan
По сути, мы имеем несколько копий rundll32.exe, нужно выяснить какая копия принадлежит апплету и убить именно процесс. Вот как это выяснить... :unsure:
Можно без проблем закрыть окно из vbs, но очень не хотелось бы плодить несколько разных файлов для одной, по сути, работы...
|
Petya V4sechkin |
24-05-2009 10:34 1126151 |
Kardinalli, или с помощью NirCmd:
Код:
nircmd.exe win close title "Установка и удаление программ"
|
…или посредством Wmic.exe:
Код:
@echo y|Wmic.exe Process WHERE (Name='Rundll32.exe' AND CommandLine LIKE '%Rundll32.exe%shell32.dll,Control_RunDLL%appwiz.cpl%Установка и удаление программ%') CALL Terminate>nul
читать дальше »
Командная строка, которую использует «explorer.exe» для запуска апплета «Установка и удаление программ», может выглядеть при этом, например, так:
Код:
"C:\WINDOWS\system32\rundll32.exe" C:\WINDOWS\system32\shell32.dll,Control_RunDLL "C:\WINDOWS\system32\appwiz.cpl",Установка и удаление программ
|
Kardinalli |
24-05-2009 12:59 1126218 |
Цитата:
Цитата Petya V4sechkin
Kardinalli, или с помощью NirCmd: »
|
Спасибо, мне этот вариант уже предлагали, но не хочется ради одной задачи по деинсталляции задействовать несколько разношерстных файлов.
Iska, спасибо за ответ! Код на открытие работает без проблем, а вот закрыть окно не получается. В коде нет ошибок? И, кстати, откуда этот вариант, никогда не встречал ничего подобного!
|
Petya V4sechkin |
24-05-2009 13:11 1126225 |
Kardinalli, или так:
Код:
TaskKill /FI "MODULES eq appwiz.cpl"
|
Kardinalli |
24-05-2009 13:14 1126229 |
Petya V4sechkin, потрясающе!!! Огроменное спасибо, блин, век живи, век учись. А таких профи как в этой ветке, вообще, слов нет... :up Спасибо друзья!
А про wmic никогда не интересовался - а зря, посмотрел, зело прелюбопытная вещь!
Petya V4sechkin, а откуда такой вариант интересный?
|
Petya V4sechkin |
24-05-2009 13:30 1126240 |
Kardinalli, я просто посмотрел опции TaskKill.
Только надо иметь в виду, что в XP Home Edition команда TaskKill отсутствует.
WMIC у вас не получилось, потому что в батнике символы % надо дублировать (для экранирования):
Код:
WMIC Process Where "Name = 'rundll32.exe' And CommandLine Like '%%appwiz.cpl%%'" Call Terminate
|
Kardinalli |
24-05-2009 13:37 1126242 |
Цитата:
Цитата Petya V4sechkin
я просто посмотрел опции TaskKill »
|
Да я вроде тоже все глаза проглядел, но толку то... :sorry:
И за правильный вариант с использованием wmic спасибо! Наверное его и использую, раз в home edition могут быть проблемы с taskkill. Wmic же есть начиная от WinXP и выше?
|
Petya V4sechkin |
24-05-2009 13:41 1126245 |
Цитата:
Цитата Kardinalli
Wmic же есть начиная от WinXP и выше?
|
Да (если в кривой "сборке" не вырезали или службу WMI не отключили для "оптимизации").
|
Kardinalli |
24-05-2009 13:52 1126254 |
Petya V4sechkin, ну, будем рассчитывать на среднестатистического юзера, а не "рукотворцев". Еще раз спасибо все за ветку, много чего любопытного узнал. Хотя еще в 90-х неплохо и немало писал на ассемблере, а ведь поди ж ты, как окна быстро от фундаментальных вещей отучают, жесть... :blush:
|
Petya V4sechkin, спасибо, не знал этого про taskkill :)
|
Kardinalli |
24-05-2009 17:18 1126404 |
интересно, почему при использовании пары команд:
cmd /c taskkill /f /im explorer.exe && start explorer.exe
просто перезапускается оболочка, а при использовании
WMIC Process Where "Name = 'explorer.exe'" Call Terminate && start explorer.exe
при запуске эксплорера открывается папка "Мои документы"?
|
Время: 07:45.
© OSzone.net 2001-