Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Закрытие апплета из bat файла. (http://forum.oszone.net/showthread.php?t=140851)

Kardinalli 23-05-2009 12:34 1125594

Закрытие апплета из bat файла.
 
Как убить процесс понятно. А вот как убить апплет? При этом не убить rundll32, на котором еще может что-то висеть? Например, как принудительно закрыть окно апплета "Установка и удаление программ" appwiz.cpl ?.

Vadikan 23-05-2009 12:54 1125611

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 "Установка и удаление программ"

Iska 24-05-2009 11:30 1126166

…или посредством 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:

Vadikan 24-05-2009 16:41 1126382

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
при запуске эксплорера открывается папка "Мои документы"?


Время: 08:46.

Время: 08:46.
© OSzone.net 2001-