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ó
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
Ở đây chúng ta phải nhập vào đường dẫn đến file NTUSER.DAT (Hình 3)
Hình 2
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ư 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.
Hình 5
Bạn có muốn một kịch bản mẫu? OK, để thiết lập background cho 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? Hình 6
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ộ.
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.
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.