Статьи

Видалення програм з консолі і простий приклад моніторингу реєстру - Вадим Стеркиной

  1. [+] Сьогодні в програмі
  2. CMD
  3. PowerShell
  4. недолік способу
  5. Відомості з реєстру Windows
  6. Швидкий моніторинг реєстру за допомогою Process Monitor
  7. Чому додатки записують відомості в різні розділи реєстру
  8. література
  9. дискусія

На форумі OSZone модератор DJ Mogarych задав питання на тему видалення програм по мережі. Команда wmic не бачила ряд додатків, що відображаються в елементі панелі управління «Установка і видалення програм». Потрібно було їх знайти!

DJ Mogarych

За умовами завдання, у вас немає можливості працювати в системі інтерактивно, тому потрібно сформувати команду для тихого видалення програми. Її виконання - вже справа техніки або інфраструктури (є psexec ). Але спочатку давайте познайомимося з способом, який ветеран OSZone застосовує для вирішення завдання.

[+] Сьогодні в програмі

Відомості з класу WMI Win32_Product

Цей спосіб базується на інструментарії управління Windows (WMI). Відомості про встановлені програми містяться в класі Win32_Product, тому можна видаляти програми з командного рядка або PowerShell.

CMD

Колега по форуму користується командaмі з арсеналу консолі WMI. Ось так можна подивитися список встановлених програм поряд з основними відомостями про них:

wmic product get name, version, vendor

Знаючи ім'я програми, можна тихо видалити її:

wmic product where name = "Ім'я програми" call uninstall / nointeractive

PowerShell

Командлет Get-WMIObject вам добре знайомий . Список програм:

Get-WmiObject Win32_Product | ft name, version, vendor, packagename

Видалення програми:

(Get-WmiObject Win32_Product -Filter "Name = 'Ім'я програми'"). Uninstall ()

недолік способу

Цей підхід пов'язаний з великим обмеженням, яке частково породило питання на форумі. Елемент панелі керування «Установка і видалення програм» відображає більше додатків, ніж виводять wmic і PowerShell.

У списку WMI присутні тільки додатки, встановлені за допомогою Windows Installer .

Це не зовсім очевидно, але я спеціально додав в першу команду PowerShell висновок назв пакунків - всі вони MSI. Інструментарій управління Windows спроектований в тому числі і для управління станом ПО, але далеко не всі програми використовують інсталятор Windows, на жаль.

Відомості з реєстру Windows

Зате всі нормальні програми при установці повинні записувати відомості до реєстру, звідки їх витягує елемент панелі керування appwiz.cpl. Конкретний розділ реєстру добре відомий і давно задокументований в статті KB314481 (її я завжди нагугліваю запитом uninstall registry).

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall

У кожної програми там свій підрозділ, ім'ям якого з волі розробника є назва або ідентифікатор програми. Команда для видалення записана в параметрі UninstallString - саме вона викликається з панелі управління.

Зауважте, що команда відкриває графічний інтерфейс дєїнсталлятора, але не видаляє програму автоматично, як у випадку зі способом WMI. Тому потрібно ще з'ясувати ключ тихою установки / видалення, залежить від типу установника . Найчастіше, це / s або / silent, і тоді команда для автоматичного видалення виглядає приблизно так:

"C: \ Program Files \ VideoLAN \ VLC \ uninstall.exe" / s

Але і у цього способу є нюанс - в обговорюваному розділі реєстру можуть відображатися не всі програми. Наприклад, я не знайшов там встановлений uTorrent (перевірте у себе).

Звідки панель управління про нього знає? До відповіді можна прийти пошуком за реєстром або просто здогадатися, але краще відразу взяти простий і зручний інструмент - Process Monitor.

Швидкий моніторинг реєстру за допомогою Process Monitor

Давайте з'ясуємо, звідки «Установка і видалення програм» бере відомості про встановлений uTorrent. На панелі інструментів Process Monitor і Process Explorer є мета, яка допомагає точно визначити процес.

  1. Перетягніть мішень з Process Monitor на вікно панелі управління.
  2. Process Monitor автоматично визначить процес вікна і відфільтрує по ньому результати моніторингу, в чому легко переконатися, відкривши список фільтрів поєднанням Ctrl + L. В даному випадку за руку був схоплений процес explorer.exe з PID 3704.

  3. В панелі управління знайдіть програми, щоб спровокувати запит до реєстру.
  4. В Process Monitor натисніть Ctrl + F і пошукайте ім'я програми або видавця (я шукав torrent).
  5. Перейдіть в редактор реєстру, натисніть сполучення клавіш Ctrl + J.

Зверніть увагу на ім'я розділу реєстру. Це розділу Користувачів HKEY_CURENT_USER, а решту шляху ідентичний системному розділу HKLM, який розглядався вище.

Крім uTorrent в цьому розділі у мене відзначився браузер Яндекс і один додаток Microsoft, що побажала не афішувати свою назву в імені підрозділу. Зауважте, що Process Monitor допоміг знайти потрібну інформацію моментально!

Чому додатки записують відомості в різні розділи реєстру

Для експерименту виконайте повторну установку uTorrent або будь-якого іншого програми зі списку HKCU. По ходу справи ви не побачите запиту UAC. Додатком для установки і роботи не потрібні права адміністратора, тому немає необхідності ставити його в Program Files і вносити зміни в HKLM. Воно встановлюється в профіль і пише відомості тільки в розділ реєстру HKCU.

Стосовно до видалення тут є ще один нюанс - програма встановлена ​​в профіль конкретного користувача, що видно на малюнку вище (Users \ Vadim). Тому при дистанційному видаленні команда повинна містити абсолютний шлях, якщо тільки не виконується від імені цього користувача.

Традиційний же спосіб установки програм пов'язаний з вимогою прав адміністратора, збереженням файлів програми в Program Files і записом відомостей в HKLM. Навіть якщо технічно в цьому немає потреби, розробники можуть йти назустріч адміністраторам, допомагаючи їм контролювати установку програм на ПК і проводити інвентаризацію ПО.

Мені траплялися додатки, в яких установник орієнтується на поточні права користувача - адміністратора показує запит UAC, а користувачеві відразу ставить в профіль.

література

Для подальшого вивчення питання вам можуть стати в нагоді підібрані мною матеріали. Відкриває список стаття, якій незабаром виповниться 10 років. Вона ще з першої хвилі матеріалів на тему автоустановки, але цілком актуальна.

дискусія

Я вирішив розповісти про мету після того, як двічі за цілком святковий день скористався їй спочатку в Process Explorer, а потім в Process Monitor. Такі інструменти значно спрощують вивчення системи, і в нашому випадку відповідь на зовсім неочевидний питання знайшовся дуже легко. У мене майже два десятка записів про утиліти sysinternals , І майже всі завдання вирішуються в 2-3 ходу.

Судячи по форуму і поштою, новорічні свята багато читачів присвятили [пере] установці Windows, і я не виключаю появи невеличкої замітки за мотивами питань. Зазвичай, під час канікул я створюю декілька статей і ставлю їх на майбутні дати, але в цей раз не вийшло. Я не так багато часу проводив за ПК і навіть не зумів підвести підсумки велосезону оТ-о Втім, ідей і начерків тільки додалося :) Проте я поколупав блог і крім іншого прикрутив пошук в мобільне меню , Про що ви мене просили.

А ви чим високотехнологічним займалися в канікули? Чи готові до Windows 10 Consumer Preview через тиждень? :)

Обговорення завершено.

Звідки панель управління про нього знає?
А ви чим високотехнологічним займалися в канікули?
Чи готові до Windows 10 Consumer Preview через тиждень?

Новости