2011-10-15 34 views
7

Tôi hiện đang sử dụng các chức năng Microsoft.Win32.Registry để tạo, xóa, đặt/nhận giá trị, v.v. Có cách nào để 'xuất' một khóa nhất định chứa cài đặt của ứng dụng cho .REG tệp?Xuất khóa đăng ký sang tệp .REG trong C#

+0

https://stackoverflow.com/a/16317193/492 –

Trả lời

0

Một cách khác có thể là sử dụng PowerShell cho việc này. Bạn cũng có thể chạy các script ps từ C#. Here là một ví dụ về tập lệnh ps xuất ra tệp .reg.

4

Bạn có thể p/pinvoke RegSaveKeyEx.

+0

Có liên quan, đây là cách để thực hiện việc này. Rất đơn giản thực sự. –

1

Tôi đã phát hiện ra rằng Khi cố gắng để tạo ra một tập tin REG hợp lệ bạn cần phải làm theo quy tắc nhất định:

tập tin của bạn phải có này như dòng đầu tiên:

"Windows Registry Editor Version 5.00"

  1. trên dòng tiếp theo thêm đường dẫn chính đầy đủ giữa dấu ngoặc

  2. thêm tương ứng với cặp Tên/Giá trị, mỗi trên một dòng riêng. định dạng là:

    • "ValueName" = "Value" (loại SZ)
    • "ValueName" = dword:00000000 (dword loại - luôn 8 chữ số)

Đối BINARY, MULTI_SZ, EXPAND_SZ ... Tôi có thể không hoàn toàn bình luận kể từ khi tôi không làm việc với họ.

  1. lặp lại 2 và 3 nếu cần thiết để bổ sung thêm phím/subkeys

Lưu ý rằng tôi đã chỉ được sử dụng này để xuất khẩu/sửa đổi chuỗi giá trị (SZ); đây là một helper nhỏ mà hoạt động tuyệt vời, cho xuất khẩu một giá trị duy nhất:

private void ExportRegistryKey(string RegistryKeyPath, string ValueName, string Value, string ExportFileName = "ExportedRegValue.reg") 
    { 
     string regTemplate = @"Windows Registry Editor Version 5.00\r\n[{0}]\r\n""{1}""=""{2}"""; 
     string regFileContent = string.Format(regTemplate, RegistryKeyPath, ValueName, Value); 
     File.WriteAllText(ExportFileName, regFileContent); 
     return true; 
    } 

Nếu bạn cần để xuất khẩu nhiều giá trị, bạn có thể thay đổi chức năng để có một cuốn từ điển, sử dụng tên giá trị như một chìa khóa và giá trị thực tế làm giá trị, sau đó lặp lại trong khi thêm vào biến số regFileContent.