Tải bản đầy đủ (.pdf) (11 trang)

Tài liệu Dọn dẹp Registry một cách có hiệu quả pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (480.12 KB, 11 trang )

Dọn dẹp Registry một cách có hiệu quả

Bài viết này sẽ giới thiệu cho bạn cách dùng

kịch bản để dọn dẹp registry hoặc thay đổi
các profile của người dùng trên một máy
tính.

Chúng tôi cũng giới thiệu cách sử dụng phương pháp này như thế nào
đối với kịch bản khởi động của máy tính bên trong Group Policy Object
(GPO) để thay đổi tất cả profile người dùng trong miền, site hoặc OU,
thay đổi các thiết lập registry người dùng bằng kịch bản khởi động
máy tính….

Trong một số trường hợp bạn có th
ể được yêu cầu xóa, thêm, hoặc
thay đổi một số phần của registry – đối với tất cả người dùng trên máy

tính cùng một lúc.

Trong hầu hết các trường hợp chúng tôi sẽ sử dụng Group Policy
Object đối với người dùng để thêm, thay đổi một giá trị, tuy nhiên khi
nói đến việc giải phóng các giá trị thì đôi khi sẽ sử dụng các kịch bản.
Cũng vậy, chúng tôi sẽ thực hiện một nhiệm vụ cleanup trong một tiến

trình cụ thể mà không phải đợi tất cả người dùng đăng nhập. Bài báo
này sẽ thể hiện cho bạn cách thực hiện các vấn đề trên một cách dễ
hiểu nhất.

Chúng tôi sẽ xem xét cách nào có thể thực hiện việc thay đổi registry
bằng một kịch bản – và kết hợp nó với một GPO trên máy tính (khởi


động và tắt máy), thay vì sử dụng một GPO trên đối tượng người dùng
(đăng nhập hoặc
đăng xuất).

Tại sao chúng ta lại thực hiện điều này?

Vậy tại sao đó là một phương pháp thông minh? Có thể bạn muốn thực

hiện “cleanup” suốt đêm, và muốn bảo đảm rằng giá trị nào đó được
thay đổi (xóa, bổ sung hoặc thay đổi) vào sáng hôm sau – điển hình
các khóa ‘Run’ hay ‘RunOnce’ trong phần người dùng của registry sau
khi bị virus tấn công – được kết hợp với thủ tục Wake-On-Lan (WOL)
và như vậy bạn sẽ không còn có thời gian để về nhà.

Trong một số trường hợp khác người dùng có thể không có các đặc
quyền cần thiết để thực hiện cleanup hoặc nhiệm vụ thay đổi. Khóa
registry bạn muốn thay đổi có thể được bảo vệ bằng một chính sách
bảo mật, hãy làm cho nó không có hiệu lực để có thể sử dụng GPO của

người dùng (khi nó chạy trong nội dung của người dùng). Các kịch bản
khởi động máy tính thực thi trong nội dung của tài khoản hệ thống –có

thể hữu dụng trong việc ghi nhớ nhiều tình huống.

Cảnh báo!

Mã được thể hiện trong bài báo này được chỉ được lập ra cho mục đích
kiểm tra – sử dụng nó trong sản xuất có thể gây cho bạn sự rủi ro. Mã
trong bài là mã đơn giản để bạn đọc có thể dễ hiểu. Phải xác nhận tính


năng kịch bản trong môi trường kiểm tra trước khi thực hiện phần này
trong sản phẩm. Bạn cũng có thể gộp thêm vào các chức năng quản lý
lỗi, ghi chép,… thay đổi như bạn muốn!

Các thông tin cần biết thêm

Trước khi đi sâu vào trong code, một số điều về registry phải được làm

rõ ràng.

Thông thường thì mọi người đều cho rằng phần HKEY_USERS của
registry ở một nơi mà bạn có thể nhìn thấy trong profile cục bộ trên
máy tính. Tuy nhiên sự thật là danh sách profile của HKEY_USERS
được nạp trên máy để biết được các profile là tích cực trong bộ nhớ.
Ngay khi người dùng đăng nhập vào máy tính, mục nhập sẽ xuất hiện
trong phần registry này.





















Như những gì thể hiện trong hình 1, bạn có thể thấy được một số
profile đã được nạp – cho dù chỉ một người dùng đăng nhập vào giao
diện. Khi người dùng đăng xuất, Registry Hive (các nhánh trong
registry) sẽ không được nạp và nhanh chóng biến mất trong mục
HKEY_USERS. Đây là một giải thích vắn tắt về các mục được nạp:


.DEFAULT” là profile ng
ư
ời dùng mặc định – không phải là thứ mà tất
cả người dùng sẽ nhìn thấy (giống như một profile công cộng hoặc cho
tất cả người dùng) và không thể sao chép sang máy tính khác. Bằng
các giá trị mặc định trong profile này bạn có thể thay đổi tùy chọn như
màn hình đăng nhập (Ctrl+Alt+Delete), các thiết lập phím Num/Caps
Lock ban đầu,…

"S-1-5-18” là bộ nhận dạng bảo mật “Hệ thống” (SID)
"S-1-5-19" là “LocalService” SID
"S-1-5-20" là “NetworkService” SID

Một profile hoặc SID bắt đầu là "S-1-5-21-" và kết thúc "-500" là SID
c
ủa tài khoản quản trị viên. Các profile người dùng tích cực nằm trong
tất cả các mục khác có trong phần HKEY_USERS. Trong các ví dụ kịch

bản trong bài, các profile là không thể chạm vào – chỉ người dùng


Hình 1

thông th
ư
ờng” mới có thể được chạm tới – bạn có thể thay đổi một
cách dễ dàng bằng cách xóa một số dòng trong code.

Load Hive

Nếu bạn muốn thay đổi profile của một người dùng không đăng nhập
hiện hành thì phải có ít nhất hai tùy chọn:

1-Load hive thủ công trong Regedit
2-Tạo một kịch bản “Load hive” đó

Chúng ta hãy quan sát tùy chọn đầu tiên. Nếu bạn mở Regedit (Start
> Run > Regedit) và tìm đến mục HKEY_USERS (bạn phải kích hoặc
đánh dấu vào nó), sau
đó vào menu File, sẽ có thể chọn “Load Hive…”
(xem hình 2)

















Ở đây chúng ta phải nhập vào đường dẫn đến file NTUSER.DAT (Hình
3)


Hình 2























File NTUSER.DAT được đặt trong thư mục profile người dùng. Ở trên,
chúng ta có thể nhìn thấy file NTUSER.DAT của người dùng ‘test2’. File
này được đặt trong thư mục “C:\Documents and Settings\test2\”– trên

Windows Vista, các profile người dùng thường được lưu trong thư mục

C:\Users\”. Nếu không thể thấy file NTUSER.DAT như trong h
ì
nh 3 thì
bạn nên vào tùy chọn Tools > Folder và chọn “Show hidden files and
folders”.

Khi thực hiện load hive tạm thời, chúng ta cần đặt tên cho chúng.
Trong hình 4 và các ví dụ kịch bản chúng ta sử dụng tên là

TmpLoadHive’.


Hình 3














Kích OK và cấu trúc hive sẽ xuất hiện như trong hình 5






















Trong hình 5, ‘TmpLoadHive’ có thể được mở rộng để xem cấu trúc của

hive người dùng được nạp – nó trông giống như các registry của người
dùng khác và phân biệt với nhau bằng HKEY_CURRENT_USER (HKCU)
khi họ đăng nhập vào máy tính.

Khi đã thực hiện xong, bạn hãy nhớ upload hive của người dùng bằng
các chọn ‘TmpLoadHive’ hive và vào File menu > “Unload Hive…” như
Hình 4


Hình 5
trong hình 6

Quan trọng

Nếu không thực hiện unload hive thì bạn không thể thực hiện load hive

lại cho tới khi khởi động lại máy tính, bởi vì bạn không thể load một
hive đã được nạp.





















Thủ tục đó sẽ rất khó chịu nếu phải thực hiện nó cho tất cả profile
người dùng trên tất cả máy tính trong miền của bạn? Tuy nhiên may
thay chúng ta có một phương pháp khác bằng việc sử dụng “ônh bạn
già tốt bụng” REG.EXE.

Sử dụ
ng Reg.exe để cứu nguy

Lệnh REG.EXE. có hai tham số rất hữu dụng: LOAD và UNLOAD. Chúng

thực hiện chính xác những gì đã thực hiện thủ công ở trên. Chỉ cần
phải chỉ ra tên hive tạm thời và đường dẫn đầy đủ đến file
NTUSER.DAT, file mà chúng ta muốn load vào bộ nhớ.

Bạn có muốn một kịch bản mẫu? OK, để thiết lập background cho


Hình 6
profile người dùng mặc định bạn có thể chạy code dưới đây:


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.bmp" /f
REG.EXE UNLOAD HKU\DefU

Đoạn code ở trên sẽ LOAD hive cho profile người dùng mặc định vào
hive tạm thời gọi là “DefU” trong “HKEY_USERS” của cở sở dữ liệu
registry. Sau đó nó sẽ thiết lập một giá trị registry cho background của

profile người dùng mặc định, nó là profile sẽ được tự động copy khi
một người dùng mới được tạo (thời điểm đầu khi họ đăng nhập). Cuối
cùng nó sẽ UNLOAD hive tạm thời đó.

Vậy có thể tìm file Ntuser.dat trong kịch bản bằng cách nào?

Khi muốn thực hiện load hive cho tất cả người dùng trên máy tính,
chúng ta sẽ muốn tìm tất cả profile người dùng trên máy tính đó một
cách an toàn và dễ dàng ở mức có thể. Chúng ta sẽ
tìm đến thư mục
trong “Documents and Settings” hoặc “Users” trên Vista/Windows
Server 2008 – nhưng có một phương pháp khác tốt hơn.

Trong giá trị registry dưới đây:


HKLM\Software\Microsoft\Windows
NT\CurrentVersion\ProfileList\XXX\ProfileImagePath”
bạn sẽ tìm thấy thư mục profile đúng cho tất cả người dùng cục bộ.
XXX là SID của người dùng, vì vậy bằng cách đi qua tất cả các key

này, chúng ta sẽ có một đường dẫn đầy đủ cho các file NTUSER.DAT
cục bộ.

Chúng tôi đã viết một hàm VB Script để liệt kê danh sách các thư mục
profile người dùng trên máy tính (trong một chuỗi được phân biệt bằng

ký tự “|”) – nó tồn tại cục bộ và từ xa. Các chức năng loại trừ profile
của Systemprofile, LocalService, NetworkService và tài khoản Local
Administrator – trong hầu hết các trường hợp không có yêu cầu
cleanup, nhưng các câu lệnh ElseIf có thể dễ dàng loại trừ được nếu
cần. Hàm này có tên gọi là “GetUserProfileDirsFromRegistry” và bạn có

thể tìm thấy ở đây.

Bạn có thể hỏi gì về các profile Roaming? Các file NTUSER.DAT là tất
cả những gì chúng ta cần vì vậy nếu muốn thay đổi profile người dùng
roaming thì bạn nên viết một kịch bản duyệt thẳng đến vị trí mạng của

profile roaming đó mà bạn có…

Xóa giá trị hoặc khóa

Giờ thì chúng ta đã biết cách thực hiện load hive (hoặc gán) bên trong
một kịch bản, chúng ta chỉ cần thay đổi một số thứ bên trong hive đó.
Bạn có thể có đến hàng trăm thứ bên trong đó để thực hiện, nhưng
chúng tôi chỉ sử dụng hai chức năng – cả hai chức năng này đều dùng
để xóa các phần bên trong hive đã được load. Đây là một giải thích:

Sau khi mộ
t virus tấn công, bạn có thể phải thực hiện việc cleanup

khóa “Run”:


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\R
un” cho tất cả người dùng cục bộ. Có thể một số malware đã tạo một
mục mà bạn cần phải xóa chúng – với mục đích đó chúng tôi đã tạo
một thường trình con DeleteSingleValueFromTmpLoadHive. Thường
trình này có thể xóa một giá trị trong registry.

Bạn cũng có thể muốn xóa toàn bộ một khóa registry, gồm có các
khóa con và các giá trị,… “HKEY_CURRENT_USER
\Software\Windowsecurity.com”, với mục đích đó chúng tôi sẽ gộp cả
thường trình con DeleteKeyAndSubsFromTmpLoadHive

S
ự kết hợp tuyệt vời

Khi kết hợp những gì đã học được ở đây và đang thực hiện một số kịch
bản VBS cũ, chúng ta có một kịch bản thực hiện các nhiệm vụ dưới
đây:

Tìm tất cả các thư mục profile trên máy tính cục bộ bằng cách đọc các
giá trị registry được đề cập ở trên.

Bỏ qua các profile có liên quan đến hệ đi
ều hành, gồm có tài khoản
quản trị viên cục bộ

Thực hiện load hive cho registry từ các file NTUSER.DAT bên trong thư
mục profile


Xóa khóa registry, gồm có tất cả các khóa con, các giá trị,… cho mỗi
profile người dùng được gắn (load).

Xóa giá trị registry cho mỗi profile người dùng được gắn (load) **
* ”\Software\Windowsecurity.com” (and all sub keys/values)
**
”\Software\Microsoft\Windows\CurrentVersion\Run\VirusExecutable”
Kịch bản không nhắc bạn xác nhận khi nó hoàn tất và bất kỳ lỗi nào
cũng sẽ được triệt tiêu (sử dụng cách quản lý ‘On Error Resume Next’).

Hành vi này có thể được thay đổi hợp với nhu cầu của bạn. Vì đây
không phải là một bài về kịch bản thực sự nên chúng tôi không thể đi
sâu vào trong code của nó, tuy nhiên nếu bạn có một chút kiến thức
về kịch bản thì có thể đưa ra những ý tưởng tốt về những gì sẽ thực
hiện.

Một ví dụ code hoàn thiện có thể dowload và xem tại đây
. Nó đã được
kiểm tra trên Microsoft Windows XP, Windows Server 2003 và
Windows Vista.

Hệ thống

Ở đây có thể “vấp phải” một máy tính đơn lẻ, máy tính cục bộ từ đó
mà chúng ta thực thi kịch bản – hoặc để chính xác hơn: tất cả các hive

người dùng trên nó. Có một giới hạn lớn ở đây: người dùng nhìn chung
đều không phải là các quản trị viên, và vì vậy họ sẽ không thể thay đổi


registry cho những người dùng khác. Điều này có nghĩa là chúng tôi
muốn chạy kịch bản quản trị nội bộ cho các máy tính trong miền –
hoặc thực hiện một số thứ có hiệu quả cao: sử dụng Group Policy ở
mức máy và cấu hình một kịch bản khởi động máy.

Một thứ thú vị về kịch bản khởi động máy tính là đầu tiên trên tất cả
nó phải chạy trong ngữ cảnh Local System,
đây là một tài khoản mạnh

(vì vậy bạn có thể thực hiện hầu hết các việc), và thứ hai đó là nó có
thể thiết lập để thực thi trên hàng nghìn máy tính trong vòng một vài
phút, bằng cách đặt GPO trên miền Active Directory, site hoặc
Organizational Unit (OU)

Bạn cần phải biết rằng, lần load đầu tiên của GPO máy tính mới có thể
thất bại, trong trường hợp này chúng ta sẽ phải khởi động lại máy tính
(và có thể thực hiện lệnh GPUPDATE /FORCE cho chắc chắn). Bạn cũng

nên đưa ra một kịch bản thời gian để thực thi trước khi đăng nhập – cả

hai đều liên quan đến các vấn đề có thể xuất hiện khi chính sách này
được nạp lúc hệ thống khởi động. Tuy nhiên chúng tôi sẽ không nhắm
vào các tính năng sâu trong GP ở bài này.

Nếu có chức năng Wake-On-LAN (WOL) trên mạng thì bạn có thể khởi
động các máy tính suốt đêm để thực hiện việc cleanup và tắt máy tính
sau đó. Bằng cách kết hợp kịch bản WOL và Group Policy, chúng ta có
thể thực hiện cleanup một cách có hiệu quả trong một thời gian ngắn
ho
ặc một số công việc mà chúng ta muốn thực hiện mà không cần

phải làm quá nhiều công việc: Khả năng sáng tạo không hạn chế!

Kết luận

Chúng ta đã thấy được cách kết hợp viết kịch bản và các kịch bản khởi
động máy tính trong Group Policy để thực hiện việc cleanup một cách
có hiệu quả. Bây giờ chúng ta có thể cập nhật profile người dùng thậm
chí khi họ không được load vào bộ nhớ - không c
ần đăng nhập vào hệ
thống.

Phương pháp này có thể được phát triển xa hơn nữa để thay đổi các
phần khác của profile, có thể là các file và thư mục cho tất cả người
dùng trên máy tính.


×