Статьи

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

  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 через тиждень?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то