Ефективне очищення реєстру

Автор Якоб Хейдельберг (Jakob H. Heidelberg)

Відео: 7 ЕФЕКТИВНА ОЧИЩЕННЯ ВАШОГО КОМП`ЮТЕРА CCleaner

У цій статті ми продемонструємо, як створити сценарій для очищення або для модифікації реєстру для всіх профілів на певному комп`ютері, наприклад, щоб видалити вірус. Ми також побачимо, як цей підхід можна використовувати спільно зі сценаріями запуску комп`ютера (startup script) всередині комп`ютерного об`єкта політики групи (Group Policy Object) для модифікації всіх призначених для користувача профілів в домені, на сайті або в організаційній одиниці OU. Так ми в дійсності можемо змінювати налаштування реєстру за допомогою сценаріїв запуску комп`ютера (startup script)…

У деяких випадках вам знадобитися видалити, додати або змінити деякі частини реєстру для всіх користувачів на комп`ютері одночасно. У більшості випадків ми воліємо використовувати об`єкт політики групи Group Policy Object (GPO) для користувачів, щоб видалити або додати певне значення, але коли справа стосується видалення значень, то ми повинні використовувати сценарії (на жаль, ви можете сказати). Також, іноді нам необхідно виконати завдання по очищенню єдиним процесом, не чекаючи поки все користувача зайдуть на комп`ютер. У цій статті ми розповімо, як це зробити простим способом.

Ми дізнаємося, як робити зміна реєстру за допомогою дуже ефективного сценарію і об`єднавши його з GPO на рівні комп`ютера (включення або виключення), замість використання GPO для призначеного для користувача об`єкта (вхід або вихід).

Чому я повинен це робити?

Отже, чому ж це є дуже розумним підходом? Може бути, ви хочете робити очистку всю ніч, коли ви можете переконатися, що змінено певне значення (видалено, додано або змінено) наступного ранку!

В інших випадках у користувача може бути недостатньо прав для виконання завдань з очищення або модифікації. Ключ реєстру (registry key), який ви хочете змінити, може бути захищений особливими правами, в результаті чого може бути неможливим використання GPO користувача (тому що він запускається в контексті користувача). Найчудовіша річ полягає в тому. Що сценарії, що виконуються під час запуску комп`ютера (startup script) запускаються від імені облікового запису System, тому пам`ятайте про це, це може стати в нагоді в багатьох ситуаціях!

попередження! Код, представлений в цій статті, написаний тільки для тестування - використовуйте його в промисловому середовищі на свій власний страх і ризик. Наведений код трохи спрощений для полегшення читання і сприйняття. Будь ласка, перевіряйте функціональність цього сценарію в тестовому середовищі до того, як використовувати його в промисловому середовищі. Ви можете додати додаткову обробку помилок, журнализацию і додаткову функціональність на свій власний розсуд!

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

фон

Перед тим, як ми почнемо поглиблене вивчення коду, хочу трохи розповісти про реєстр, щоб все стало зовсім зрозуміло.

Дуже часто люди думають, що частина реєстру HKEY_USERS - це місце, де ви можете побачити всі локальні профілі (local profile) на даному комп`ютері. Однак, це не так. У розділі HKEY_USERS представлений список профілів, які в поточний момент завантажені на машині, або так би мовити, профілі, які активні в пам`яті. Як тільки користувач заходить на комп`ютер, новий запис буде видна в цій частині реєстру.

частина реєстру HKEY_USERS
Малюнок 1

Як показано на малюнку 1 ви побачите, що завантажено кілька профілів навіть незважаючи на те, що в консолі завантажений один користувач. Коли користувач виходить, ХайВей або вулик реєстру (Registry Hive) Вивантажується і більше не видно в розділі HKEY_USERS. Нижче наведено короткий пояснення завантажених ХайВей:

".DEFAULT" - профіль користувача за замовчуванням - це не те, що можуть бачити всі користувачі (як загальний профіль (Public) або профіль всі користувачі (All Users)) а також це не профіль реєстру, який копіюється для всіх нових профілів користувачів на комп`ютері (це помилки). Це стандартний профіль, який завантажений навіть тоді, коли ніхто не увійшов на комп`ютер - тому він також називається завантажувальний профіль (startup profile - завантажується ще до того моменту, як ви заходите на комп`ютер). Змінивши значення цього профілю ви можете змінювати такі настройки, як заставка на екрані для входу (Ctrl + Alt + Delete), початкове значення кнопок Num / Caps Lock.

"S-1-5-18" - це "System" Security Identifier (SID)

"S-1-5-19" - це "LocalService" SID

"S-1-5-20" - це "NetworkService" SID

Профіль або ідентифікатор безпеки (SID), що починається на "S-1-5-21;" і закінчується на "-500" - це SID вбудованої облікового запису адміністратора (Administrator account). Реальні і активні профілі користувачів - це всі інші записи в розділі реєстру HKEY_USERS. У прикладах сценаріїв, включених в цю статтю, вищевказані профілі не рушають - задіюються тільки профілі звичайних користувачів - ви можете це легко змінити, додавши кілька рядків в коді.

Завантажити мій вулик (Hive) ...

Отже, що якщо я захочу змінити профіль користувача, який зараз не знаходиться на комп`ютері? Є принаймні два способи:

1 - вручну завантажити ХайВей або вулик в Regedit

2 - створити сценарій, який завантажує ХайВей динамічно.




Давайте розглянемо перший варіант. Якщо ви відкриєте Regedit (Start rt- Run rt- Regedit) і знайдете розділ HKEY_USERS (ви повинні клацнути або виділити його), потім перейдете до меню File (Файл), то ви зможете вибрати "Load Hive ..." (дивись Малюнок 2)

Завантажити мій вулик (Hive)
малюнок 2

Після цього з`явиться вікно, в якому необхідно вказати шлях до файлу NTUSER.DAT (дивись Малюнок 3)

шлях до файлу NTUSER.DAT
малюнок 3

Файл NTUSER.DAT розташовується в папці з профілем користувача. Вище ви можете побачити файл NTUSER.DAT для користувача `test2`. Це файл розташований прямо в папці "C: Documents and Settings test2" - в операційній системі Windows Vista профілі користувачів (user profile) зазвичай зберігаються в папці "C: Users".

Якщо ви не знайшли файл NTUSER.DAT, як зображено на малюнку 3, то ви повинні перейти Tools rt- Folder і вибрати настройку "Show hidden files and folders" (відображати приховані папки і файли).

Після того, як ми завантажили вулик на час, ми повинні дати йому назву - виберіть його самі. На малюнку 4 і в прикладі сценарію ми використовуємо назву: `TmpLoadHive`.

TmpLoadHive
малюнок 4

Натисніть на кнопку OK і ієрархія вулика буде видно, як зображено на малюнку 5.

ієрархія вулика
малюнок 5

На малюнку 5 ми розкрили вулик під назвою `TmpLoadHive`, щоб показати структуру вулика користувача - вона буде виглядати точно також для будь-якого іншого користувача реєстру. Вона ідентично тому, щоб матиме користувач в розділі реєстру HKEY_CURRENT_USER (HKCU) після входу на комп`ютер.




Після цього не забудьте вивантажити призначений для користувача вулик (user hive), виділивши вулик `TmpLoadHive` і перейшовши в меню File rt- "Unload Hive ..." (вивантажити вулик), як показано на малюнку 6.

важливо! Якщо ви не вивантажите ХайВей, то ви не зможете знову завантажити цей вулик до перезавантаження, тому що ви не можете завантажити вже завантажений вулик (це також підходить для ввійшли користувачів, включаючи швидке переключення користувачів).

вивантажите ХайВей,
малюнок 6

Відео: Очищення реєстру Windows 7

Ця процедура може бути дуже дратує, якщо її необхідно повторити для всіх профілів користувачів (user profile) на всіх комп`ютерах у всіх ваших доменах, чи не так? На щастя у нас є ще один методу пошуку за допомогою нашого старого друга REG.EXE.

Порятунок старого друга

Команда REG.EXE має два дуже корисних параметра: LOAD і UNLOAD. Вони роблять те ж саме, що ми робили вручну вище. Нам лише потрібно вказати тимчасову назву вулика і повний шлях до файлу NTUSER.DAT, який ми хочемо завантажити в пам`ять.

Вам потрібен приклад сценарію? Добре, щоб задати фон для користувача профілю за замовчуванням (Default User profile), ми можемо виконати наступний код:

REG.EXE LOAD HKU DefU "C: Documents and Settings Default User ntuser.dat"
REG.EXE ADD "HKU DefU Control Panel Desktop" / v Wallpaper / d "C: Windows Wallpaper.jpg" / f
REG.EXE UNLOAD HKU DefU

Код, наведений вище, спочатку завантажить (LOAD) вулик для користувача профілю за замовчуванням (Default User profile) до тимчасового вулик під назвою "DefU" в розділі "HKEY_USERS" бази даних реєстру. Потім він встановить значення реєстру для фону в профілі (Default User profile), який є профілем, який автоматично копіюється при створенні користувачів (в момент першого входу). Нарешті, він вивантажить (UNLOAD) тимчасовий вулик.

Як я можу знайти файли Ntuser.dat за допомогою сценарію?

Якщо ми хочемо завантажити вулики всіх користувачів на даному комп`ютері, то ми повинні знайти всі профілі користувачів на цьому комп`ютері найпростішим способом. Звичайно, ми можемо просто переглядати в коді все папки всередині "Documents and Settings" - або "Users" на комп`ютерах з операційними системами Vista / Windows Server 2008 - але є кращий спосіб, який до того ж більш точний.

У наступному ключі реєстру:

HKLM Software Microsoft Windows NT CurrentVersion ProfileList XXX ProfileImagePath

ви можете знайти правильний шлях до профілю для всіх локальних користувачів. XXX - це SID користувача, тому переглянувши всі ці ключі реєстру ми зможемо отримати шляху до всіх локальних файлів NTUSER.DAT.

Я написав функцію на мові VB Script, яка відображає всі папки з профілями користувачів на даному комп`ютері (в один рядок, розділені символом "|") - для локальної або віддаленої машини. Функція виключає профілі для облікових записів Systemprofile, LocalService, NetworkService і Local Administrator - в більшості випадків вони не мають потреби в очищенні, але пропозиція ElseIf можна в разі потреби легко прибрати. Функція називається "GetUserProfileDirsFromRegistry" і її можна знайти тут.

А як щодо тимчасових (Roaming) профілів, ви можете запитати? Добре, все що нам потрібно - це файли NTUSER.DAT, тому як щодо того, якщо ви зміните тимчасові профілі і напишіть сценарій, який переглядає тимчасові профілі ..

Видалити це значення або ключ ...

Отже, ми знаємо, як завантажити (або змонтувати) призначений для користувача вулик (user hive) за допомогою сценарію, тепер нам потрібно змінити що-небудь в улее. Це можна зробити сотнею способів, я вибираю для цього дві функції - обидві з них видаляють вміст всередині завантаженого вулика реєстру (registry hive). Нижче наводиться пояснення:

Після вірусної атаки вам може знадобитися очистити ключ `Run`:

HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Run

для всіх локальних користувачів. Деякі шкідливі програми (malware created) створюють запис, від якої вам необхідно ізбавіться- для цих цілей я написав підпрограму DeleteSingleValueFromTmpLoadHive. Ця програма видаляє одне значення з реєстру.

Ви також можете видалити цілий ключ з реєстру (registry key), включаючи дочірні ключі і значення. "HKEY_CURRENT_USER Software Windowsecurity.com", для цих цілей я використовую підпрограму DeleteKeyAndSubsFromTmpLoadHive.

Золота комбінація

Після об`єднання всього вивченого нами, і запустивши сценарій, написаний на мові VBS, ми отримуємо сценарій, який виконує наступні завдання:

  1. Знаходить всі папки з профілями на локальному комп`ютері завдяки читанню значень реєстру, про які ми говорили вище
  2. Ігнорує всі вбудовані системні профілі (OS profile), включаючи обліковий запис локального адміністратора
  3. Завантажує вулик реєстру (registry hive) з файлу NTUSER.DAT, розташованого усередині папки з профілем
  4. Видаляє ключ реєстру, включаючи всі дочірні ключі і значення для кожного подмонтіровать профілю користувача (user profile) *
  5. Видаляє окреме значення реєстру для кожного подмонтіровать профілю користувача (user profile) **

* "

** "

Сценарій не видає вікно підтвердження після виконання, і всі помилки, що виникли в ході виконання, придушуються (за допомогою пропозиції `On Error Resume Next`). У разі необхідності така поведінка сценарію можна виправити. Оскільки ця стаття присвячена не написання коду, то я не можу занадто сильно заглиблюватися в його опис, але якщо ви трохи знайомі з написанням сценаріїв, то ви прекрасно зрозумієте, що там відбувається.

Повний приклад коду ви можете побачити і завантажити тут! Він був перевірений на комп`ютерах з операційними системами Microsoft Windows XP, Microsoft Windows Server 2003 і Microsoft Windows Vista.

SYSTEM тут!

Таким чином ми можемо змінити реєстр на одному комп`ютері, на локальному комп`ютері, з якого ми запустили сценарій, або якщо бути більш точними, для всіх користувачів на ньому. Однак, існує одне велике обмеження: зазвичай, користувачі (на щастя) не є локальними адміністраторами, тому вони не зможуть змінити реєстр для інших користувачів! Це означає, що локальний адміністратор повинен вручну виконати сценарій на всіх комп`ютерах в домені, або зробити щось більш ефективне: використовувати політику групи Group Policy на рівні комп`ютера і налаштувати сценарій, що виконується при запуску комп`ютера (computer startup script). Щоб дізнатися більше про сценарії, що запускаються під час завантаження комп`ютера, загляньте в розділ зовнішніх посилань.

Принадність сценаріїв, що запускаються під час завантаження комп`ютера (computer startup script) полягає в тому, що всі вони запускаються в контексті локальної системи (Local System), дуже потужною облікового запису (від імені якої ви можете зробити практично все), і всі вони можуть бути запущені на тисячі комп`ютерів за кілька хвилин, замінивши GPO на уровене домену Active Directory, сайту або організаційної одиниці Organizational Unit (OU)!

Будь ласка, зверніть увагу, що перша завантаження GPO на новому комп`ютері може закінчитися невдачею, в цьому випадку вам необхідно перезавантажити комп`ютер (і, може бути, виконати команду GPUPDATE / FORCE). Також, сценарієм потрібен час на виконання - обидві з цих проблем можуть виникнути під час завантаження системи.

Якщо ви володієте функціональність Wake-On-LAN (розбудити по мережі або WOL) в мережі, то ви можете завантажити комп`ютери в нічний час, виконати необхідну роботу з очищення комп`ютерів, а потім знову їх вимкнути. Таким чином, завдяки спільній роботі WOL і політики групи Group Policy, ми виконаємо дуже ефективну роботу за короткий проміжок часу - або будь-яку іншу роботу: Ви обмежені лише своєю уявою!

висновок

Ми дізналися, як об`єднати сценарії, які запускаються під час завантаження комп`ютера (startup script) з політикою групи Group Policy, для виконання роботи по очищенню реєстру дуже ефективним способом. Тепер ми можемо оновлювати профілі користувачів (user profile) навіть якщо вони в даний час не перебувають на своєму комп`ютері.

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

джерело: winsecurity.ru

Поділися в соціальних мережах:

Схожі
Використання редактора реєстру regedit в командних файлах windowsВикористання редактора реєстру regedit в командних файлах windows
Як windows 7 заборонити оновлення до windows 10?Як windows 7 заборонити оновлення до windows 10?
Очищення диска засобами windows 7. Автоматичний запуск програми "очищення диска" за…Очищення диска засобами windows 7. Автоматичний запуск програми "очищення диска" за…
Gpupdate - виконання оновлення групових політик дляпользователя і комп`ютера.Gpupdate - виконання оновлення групових політик дляпользователя і комп`ютера.
Автоматизація входу в систему на комп`ютері під керуванням windows xpАвтоматизація входу в систему на комп`ютері під керуванням windows xp
Налаштування меню "пуск" і панель завдань через редактор локальної групової політикиНалаштування меню "пуск" і панель завдань через редактор локальної групової політики
Системний реєстр windowsСистемний реєстр windows
Створення резервної копії реєструСтворення резервної копії реєстру
Як відключити відстрочку автозапуску додатків в windows 10Як відключити відстрочку автозапуску додатків в windows 10
Як очистити завантажувальний диск на macbook, imac і mac miniЯк очистити завантажувальний диск на macbook, imac і mac mini
» » Ефективне очищення реєстру