Sao lưu và phục hồi Registry trong Windows XP (phần I)
Bạn đã từng gặp phải vấn đề với Registry? Có lẽ người dùng chuyên nghiệp và những người tò mò muốn khám phá mọi thứ bên trong hệ điều hành không còn lạ lẫm gì với nó. Còn riêng tôi, chỉ một thời gian ngắn sau khi cài đặt Windows XP mọi thứ đã rối tung lên với các Registry. Sau khi tham khảo, tìm hiểu, tra cứu tài liệu từ nhiều nguồn khác nhau, cuối cùng tôi cũng tìm ra phương thức khắc phục và đưa chúng trở lại trật tự hoạt động thông thường. Xin được chia sẻ ra đây để cùng các bạn khỏi phải bối rối trước mấy anh chàng bé nhỏ mà cũng lắm phiền phức này.
Có hai hình thức làm việc với Registry: trực tiếp hoặc thông qua một phần mềm trung gian. Sử dụng phần mềm thường được đánh giá là an toàn hơn mặc dù đôi khi không hiệu quả được như truy cập trực tiếp. Bất kỳ ai đã từng dùng máy tính chắc chắn đều quen thuộc với cách thức thực hiện các thay đổi bên trong hệ thống thông qua phần mềm trung gian. Control Panel là một ví dụ điển hình. Thay đổi một thiết lập bên trong Control Panel tức là đã thay đổi nội dung của một Registry nào đó. Chỉ có điều bạn không thể biết được cụ thể là Registry nào và diễn biến thay đổi bên trong ra sao.
Thay đổi bằng cách truy cập trực tiếp Registry nguy hiểm hơn nhiều. Trước đây thường có hai phiên bản quản lý thanh ghi Registry Editor là regetdit và regedt32. Nhưng trong Windows XP, chúng được gộp lại thành Microsoft Registry Editor Version 5.1. Bạn có thể dùng trực tiếp bằng cách gõ tên lệnh trên Run hoặc thông qua Version 5.1 đều được. Có điều Version 5.1 thiếu mô hình "chỉ đọc" của regedt32. Do đó bạn sẽ cần phải cẩn thận hơn khi thay đổi các thông số Registry. Và nhớ rằng phải luôn luôn sao lưu một bản thông số ban đầu để phục hồi khi cần thiết.
Registry trong Windows XP được cấu trúc như thế nào?
Mở Registry Editor vào Start > Run > gõ: regedit trong hộp lệnh mở ra (ở dòng Open), bạn sẽ thấy nó được chia thành hai khung. Khung bên trái là Keys Pane (khung chính), khung bên phải là Values Pane (khung giá trị). Khung bên trái có 5 thành phần chính, còn gọi là các khoá gốc như hình bên dưới. (Trong hình, các dòng màu đỏ là tên khoá gốc được thêm vào).
Registry Editor sử dụng cấu trúc cây phân tầng tương tự như Windows Explore, song có một điểm khác nhau cơ bản. Trong Windows Explore, các thư mục xuất hiện ở cả khung bên trái và bên phải, còn Registry Editor thì chỉ ở bên trái mà thôi. Biểu tượng thư mục màu vàng trong Registry Editor thể hiện cho từng khoá riêng biệt và phân tách, khung bên phải chỉ có giá trị mà không có thư mục.
Mỗi khoá chính lại có các khoá con, mỗi khoá con có thể còn có các khoá con của chính nó. Nhiều khi tổng lượng khoá con lên tới mức đáng kinh ngạc. Cũng giống như Windows Explore, vị trí Registry được định nghĩa bằng một đường dẫn. Bất kỳ tham chiếu nào tới nó đều bắt đầu từ một trong năm khoá chính.
Hình 1: Khung trái màn hình là Key Pane (Khung khoá) và khung bên phải màn hình là Values Pane (Khung giá trị)
Ghi chú ở phía dưới cùng cửa sổ Registry Editor: My Computer\HKEY_CLASSES_ROOT thể hiện đường dẫn, dòng này sẽ thay đổi khi bạn thay đổi vị trí trong cấu trúc Registry. Đây là một điểm tiện lợi, vì bạn luôn biết được vị trí Registry mình đang chỉnh sửa, thay vì phải cuộn lên đầu trang rồi ngay lập tức trở lại dòng trắng mình đang thao tác, rất mất thời gian.
Kiểu sao lưu Registry
Trước khi thực hiện bất kỳ thay đổi gì, đặc biệt là trên Registry, điều đầu tiên bạn cần nhớ là hãy sao lưu lại bản Registry hiện tại. Chỉ một sự thay đổi rất nhỏ mà chưa backup cũng đã là một sai lầm lớn, nó có thể gây cho bạn nhiều rắc rối “chết người”
Sao lưu đơn giản chỉ là “xuất ra” phần thông tin của Registry vào trong một file đã được lưu trong hệ thống của bạn. Khi bạn sử dụng đến hàm export, bạn sẽ phải lựa chọn các loại file khác nhau để save.
Mỗi kiểu file ở hình 2 đều giữ một vai trò quan trọng riêng nhất định về kiểu dữ liệu đầu ra được ghi lại. Nếu bạn chọn sai kiểu cho dữ liệu của mình có thể dẫn đến nhiều kết quả tệ hại khôn lường. Hiểu về chúng để sử dụng hiệu quả là hết sức quan trọng.
• Registration Files: tuỳ chọn Registration Files tạo ra file ".reg", là kiểu file được dùng nhiều nhất khi sao lưu Registry. Registration Files có thể được dùng theo hai cách. Một là sử dụng như một file text, có thể đọc và chỉnh sửa bằng chương trình ngoài Notepad của Registry Editor. Mỗi khi có thay đổi được thực hiện và ghi lại, bạn kích phải chuột lên tên file và dùng câu lệnh Merge (kết hợp) để add file đã thay đổi vào Registry. Nếu thực hiện câu lệnh additions (thêm vào) cho Registry, sau đó hợp nhất với File Registration đã được ghi trước đó thì bất kỳ cái gì được thêm vào qua regedit sẽ không thể loại bỏ. Nhưng các thay đổi thực hiện trên dữ liệu dùng regedit đã có từ trước trên File Registration sẽ bị ghi đè khi hợp nhất.
• Registry Hive Files: không giống như tuỳ chọn Registry Files ở trên, tuỳ chọn Registry Hive Files tạo ảnh nhị phân của khoá đăng ký đã chọn. File ảnh không thể được chỉnh sửa qua Notepad, cũng như không thể xem nội dung của nó bằng bất cứ trình soạn thảo văn bản nào. Nhiệm vụ của kiểu định dạng Registry Hive File là tạo ảnh nhìn hoàn hảo của khoá lựa chọn, cho phép nhập trở lại Registry để đảm bảo những thay đổi bạn thực hiện không có gì là khó hiểu hay mơ hồ.
• Text Files: Giống như tên gọi, tuỳ chọn này tạo ra một file text chứa thông tin về khoá lựa chọn. Mục đích chính là tạo một bản ghi hay snapshot cho những điểm cụ thể để bạn có thể tham chiếu trở lại khi cần thiết. Nhưng với Text File bạn không thể kết hợp trộn lẫn vào Registry như Registry File.
• Win9x/NT4 Registry Files: tuỳ chọn này cũng tạo file ".reg" giống như Registry Files. Đây là dạng file cũ, chỉ dùng ở các phiên bản Windows và server trước XP. Với Windows XP, tuỳ chọn này thường chỉ được dùng khi muốn hợp nhất khoá của XP với một phiên bản trước đó của hệ điều hành.
Trong bốn tuỳ chọn trên, phương thức hiệu quả nhất và an toàn nhất cho sao lưu thanh ghi là Registry Hive Files. Bạn thường không gặp phải vấn đề gì trong chỉnh sửa hay nhập ảnh khoá. Tất cả những thay đổi, bổ sung hoặc hiện tượng gì khác nếu xuất hiện đều bị loại trừ.
Nếu muốn chỉnh sửa bên ngoài giới hạn của regedit, hoặc nếu muốn đảm bảo những phần thêm vào Registry của bạn được thực hiện, ngay cả khi kết hợp trộn lẫn, bạn nên dùng Registry Files.
Nếu chỉ muốn copy khoá, có thể tham chiếu bằng cách dùng trình soạn thảo văn bản, nhưng muốn loại trừ khả năng đột nhiên file bị trộn lẫn trở lại Registry, nên dùng Text Files.
Tiến trình sao lưu thực
Tiến trình sao lưu Registry thực khá đơn giản. Bạn chỉ cần quyết định kiểu file sao lưu và lựa chọn sao lưu một khoá riêng hay toàn bộ Registry. Ở khung bên trái cửa sổ chương trình regedit, chọn khoá muốn sao lưu > kích phải chuột và chọn Export để mở Export Registry File Property Sheet. Trong cửa sổ Export Registry File Property Sheet, gõ tên file và chọn kiểu file sao lưu. Nếu muốn an toàn, bạn nên lựa chọn một trong hai kiểu Registry Hive Files và Registry Files.
Có hai điểm cần lưu ý ở đây:
• Nếu khung bên trái màn hình chương trình regedit xuất hiện My Computer, bạn không được phép sử dụng kiểu Registry Hive Files. Vì như thế là tương đương với sao lưu toàn bộ Registry. XP yêu cầu bạn phải dùng System State trong trường hợp này. (Hình thức sao lưu System State sẽ được thảo luận sâu hơn ở cuối bài).
• Nếu khung bên trái màn hình chương trình regedit xuất hiện My Computer, bạn có thể sử dụng Registry Files, nhưng phương thức này không thực sự hoàn hảo.
Sao lưu các giá trị riêng
Xem trên hình 3 bạn sẽ thấy: khoá chọn ở đây là HKEY_CURRENT_USER\Control Panel\Desktop. Trong khung Values Pane bên trái, giá trị WaitToKillAppTimeout hiện tại là 400. Đây là các giá trị riêng chúng ta sẽ sao lưu.
Registry thực chất là sự biên dịch lớn của dữ liệu. Các thông số thiết lập nằm ở đó chờ hệ điều hành hay một ứng dụng truy cập đến. Tự bản thân nó không làm được gì. Nếu nhìn thoáng qua bạn sẽ thấy chẳng có gì quan trọng. Nhưng xem xét thông tin thực sự hữu ích bên trong, những giá trị được lưu giữ giúp Windows XP và các ứng dụng hoạt động mới thấy được tầm quan trọng của các Registry. Thực hiện sai, thay đổi nhầm đều có thể khiến hệ điều hành không còn hoạt động được nữa, nhẹ hơn thì cũng khiến nhiều ứng dụng chạy sai chức năng. Vì thế sao lưu lại giá trị ở các Registry là hết sức quan trọng.
Hình 4 minh hoạ các thông tin trước khi bị thay đổi sẽ được sao lưu. Bạn nên lưu ý rằng đây là phần giá trị chứ không phải là khoá lựa chọn. Ví dụ, tôi quyết định chỉnh sửa giá trị của xâu WaitToKillAppTimeout, giá trị gốc của nó là 5000, được đánh dấu màu đỏ. Khi thay đổi, có thể bạn sẽ xoá mất giá trị ban đầu đi dù chưa quyết định chắc chắn con số mình thay đổi có thích hợp hay không. Để tránh hiện tượng quên mất giá trị gốc, tôi tạo xâu TEG_WaitToKillAppTimeout (được đánh dấu màu xanh). Cụm "TEG_" đặt trước tên giá trị thực để phân biệt và giúp bạn thuận tiện hơn khi thao tác.
Hình 4
Bây giờ hãy nhìn vào màn hình xanh bên dưới, bạn có thể lấy lại giá trị ban đầu (dòng được đánh dấu màu đỏ) đồng thời chuyển sang giá trị mới (4000) cùng một lúc. Lúc này thường xuất hiện câu hỏi: vì sao có thể xây dựng hai giá trị cho Registry cùng một lúc, có gây nên xung đột không? Xin nhớ rằng, XP hoặc một ứng dụng nào đó phải được lập trình để truy cập các giá trị phù hợp. Nếu không chúng trở nên vô dụng. Không có ứng dụng hay phần hệ điều hành nào được lập trình để tìm kiếm xâu giá trị có tên TEG_WaitToKillAppTimeout mà chỉ tìm kiếm WaitToKillAppTimeout. Vì thế nó có thể cùng tồn tại một cách vui vẻ với WaitToKillAppTimeout, cung cấp nhật trình hay bản ghi các thay đổi thực hiện trên Registry. Để chi tiết hơn, bạn có thể thêm tiền tố là giá trị ngày tháng thực hiện thay đổi như TEG08252003_WaitToKillAppTimeout (được đánh dấu màu xanh lam như trong hình).
Hình 5
Nếu những thay đổi khiến hệ thống không hoạt động, bạn phải sử dụng đến phần sao lưu (dòng đánh đấu màu xanh lục hoặc xanh lam), thay đổi giá trị đã chỉnh sửa (dòng màu đỏ) trở lại giá trị ban đầu. Cách dễ hơn là xoá xâu chỉnh sửa, sau đó kích phải chuột lên các xâu sao lưu và chọn Rename. Chỉ cần bỏ đi phần tiền tố là bạn đã có lại xâu ban đầu.
Khi thực hiện với nhiều giá trị trên nhiều Registry, phương pháp này tỏ ra rất hữu ích. Nó cung cấp hình ảnh trực quan, dễ thấy cho tất cả các chỉnh sửa thực hiện trên giá trị Registry. Sau hai tháng, nếu bạn muốn biết đã có những thay đổi gì, bạn chỉ cần mở Registry Editor, tìm vị trí khoá HKEY_CURRENT_USER\Control Panel\Desktop và so sánh WaitToKillAppTimeout với giá trị sao lưu gốc ban đầu. Bằng cách dùng tiền tố ngày tháng, bạn không chỉ biết đã có những thay đổi gì mà còn biết ngày tháng thực hiện các thay đổi đó. Sau khi kiểm tra giá trị thay đổi, bạn có thể trở lại, loại bỏ các giá trị tiền tố mới nếu thấy chúng gây phiền hà cho Registry. Còn theo kinh nghiệm của mình, tôi thấy để chúng ở đó cũng không gây ra vấn đề gì cho hệ thống.
Sao lưu các khoá riêng
Phương thức tiền tố
Một trong những câu hỏi đầu tiên thường được đặt ra sau khi đọc xong phần trên (Sao lưu giá trị riêng) là chuyện gì sẽ xảy ra nếu phương thức tiền tố còn được dùng để sao lưu các khoá riêng. Câu hỏi khá thú vị và tôi sẽ lấy một ví dụ khác để giải thích giúp các bạn dễ hiểu.
Trong phần trước chúng ta dùng khoá HKEY_CURRENT_USER\Control Panel\Desktop làm ví dụ. Bây giờ chúng ta thử sử dụng một tiền tố cho khoá Desktop và xem chuyện gì sẽ xảy ra.
• Mở chương trình ra như hình 6 để xem khoá HKEY_CURRENT_USER\Control Panel\Desktop ban đầu trước khi bất kỳ thay đổi nào được thực hiện.
Hình 6
• Hình 7 minh hoạ thay đổi thực hiện trên HKEY_CURRENT_USER\Control Panel\Desktop. Chỉ thêm vào tiền tố "TEG_" cho khoá Desktop này. Chưa có thay đổi nào được thực hiện với các khoá con WindowMetric.
Bạn nghĩ chuyện gì sẽ xảy ra khi thay đổi được thực hiện và người dùng thoát ra khỏi hệ thống rồi trở lại?
Hình 7
• Hình 8: Windows XP tự động tạo lại HKEY_CURRENT_USER\Control Panel\Desktop (được đánh dấu màu xanh lá cây). Nhưng nó khác xa so với HKEY_CURRENT_USER\Control Panel\Desktop ban đầu. Chỉ có một điểm vào trong khung Values Pane và được đặt mặc định, không có khoá con WindowMetrics. Bạn có thể thấy chương trình nền Bliss mặc định cũng được bỏ qua trên desktop.
Hình 8
Điều này nói với chúng ta cách thêm tiền tố như là một phương thức sao lưu khoá như thế nào? Đầu tiên và trên hết là mặc dù đem lại một số kết quả thú vị nhưng đây không phải là phương thức phù hợp cho việc sao lưu khoá Registry. Kết quả không thể đánh giá ở mức tốt nhất trong khi làm việc với các Registry đòi hỏi mức độ chính xác và an toàn rất cao. Song không có nghĩa là chương trình này hoàn toàn không đáng thực. Với vai trò là công cụ gỡ lỗi, phương thức này rất hữu ích khi thay đổi tên một khoá với các tiền tố dễ hiểu phía trước. Sau đó XP hoặc một ứng dụng nào đó có thể tạo lại khoá cơ sở một cách dễ dàng. Trong XP, các tiền tố được để dưới dạng ẩn.
(Xin lưu ý là bạn có thể thử với phương thức này thoải mái nhưng phải đảm bảo là trước đó đã sao lưu lại thông tin Registry ở vị trí khác).
Phương thức sử dụng file .REG
Không giống như các phương thức đã nói ở trên, sử dụng file .reg để sao lưu các khoá riêng và toàn bộ nhánh Registry là phương thức rất hiệu quả, thường được dùng hằng ngày bởi hàng triệu Registry. (Xem lại hình 3 và khoá HKEY_CURRENT_USER\Control Panel\Desktop được đánh dấu trong khung Key Pane).
Thủ tục sao lưu của phương thức này cũng khá đơn giản. Trong khung Keys Pane, kích phải chuột lên khoá muốn sao lưu (trong trường hợp này là Desktop), ghi tên file và chọn kiểu file sao lưu. Trong ví dụ ở hình 9, tên file được đặt là "Desktop", kiểu file là Registry Files (*.reg).
Hình 9
Chú ý nút "Selected Branch" thể hiện kiểu khoá thực sự được ghi lại. Kiểm tra nhanh thông tin này có thể giúp bạn tránh được nhiều sai sót đáng tiếc. Mỗi khi nút Save được bấm, khoá sẽ được ghi vào một file có tên "Desktop.reg" theo vị trí bạn chọn. Một số điểm cần lưu ý thêm:
• Tất cả các khoá con của một khoá sao lưu cũng sẽ được sao lưu. Trong trường hợp này, khoá sao lưu được chọn là HKEY_CURRENT_USER\Control Panel\Desktop thì khoá con của nó HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics cũng sẽ được sao lưu.
• Thông thường người dùng hay chuyển mức sao lưu Registry lên cao hơn so với cần thiết. Trong ví dụ này chẳng hạn, khi đánh dấu khoá sao lưu là HKEY_CURRENT_USER\Control Panel, khoá HKEY_CURRENT_USER\Control Panel\Desktop sẽ được sao lưu. Nhưng ngoài ra còn có nhiều khoá khác không mong đợi cũng trở thành một phần của file sao lưu. Bạn có thể hạn chế mức khoá muốn sao lưu gần nhất có thể bằng cách chuyển cấu trúc phân tầng xa hơn mức cần thiết. Bảng bên dưới minh hoạ file .reg tăng kích thước nhanh như thế nào nếu điểm cuối được chọn không hợp lý. Rõ ràng là lựa chọn cuối cùng được đánh dấu màu đỏ là trường hợp nên dùng. Không chỉ cần ít không gian nhớ hơn mà có có thể được kết hợp nhanh chóng, dễ chỉnh sửa khi cần thiết với ít lỗi hơn.
Điểm đầu vào khoá Kích thước file .reg được ghi
My Computer 51.6 MB
HKEY_CURRENT_USER 6.72 MB
HKEY_CURRENT_USER\Control Panel 442 KB
HKEY_CURRENT_USER\Control Panel\Desktop 7.26 KB