Đồng bộ hóa Windows registry giữa một số máy tính


9

Có một thư mục nhất định trong sổ đăng ký Windows XP mà tôi muốn được đồng bộ hóa giữa 2 máy tính của mình, kiểu Dropbox. Cách tôi muốn là mỗi khi tôi thực hiện thay đổi sổ đăng ký trong một máy tính, nó sẽ xuất hiện trên (các) máy tính khác.

Khả thi? Làm sao?

(Nếu bạn tò mò về lý do tại sao tôi muốn làm điều này: Tôi muốn có các phiên PuTTY giống nhau trên tất cả các máy tính.)


Tôi có một ý tưởng nhỏ cho một cái gì đó ... Bạn có thể cho tôi biết đường dẫn chính xác của các khóa registry putty bạn muốn không? Tôi sẽ ra ngoài bây giờ nhưng sẽ trở lại sau khoảng một giờ nữa và sẽ cố gắng giúp đỡ thêm.
William Hilsum

@William Hilsum: Đó là HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
Ram Rachum

1
Là những máy tính nói chung trên cùng một mạng? Hay bạn muốn điều này làm việc từ xa là tốt?
music2myear

@Ram Rachum Có giống nhau trên cả hai máy tính không?
William Hilsum

2
Nếu đây là về Putty, Tại sao không sử dụng putty di động ? Nó lưu các cài đặt trong một tập tin. Đồng bộ hóa các bản sao của Putty di động thông qua dropbox hoặc bất cứ điều gì.
Zoredache

Câu trả lời:


6

Xin lỗi vì mất quá nhiều thời gian, tôi nghĩ rằng đây là thời gian dài nhất tôi đã viết để trả lời!

Trước đây, tôi muốn có chức năng rất giống nhau, nhưng, tôi không thể tìm ra cách làm ... bây giờ tôi biết lập trình nhiều hơn một chút, tôi nghĩ rằng nó sẽ đáng để thử làm một cái gì đó.

Vì vậy, một vài giờ sau, tôi cung cấp cho bạn , RegSync v1.

nhập mô tả hình ảnh ở đây

Chỉ cần lấy một bản sao của đường dẫn đăng ký đầy đủ (trong trường hợp của bạn HKEY_CURRENT_USER\Software\SimonTatham\PuTTY) và dán nó vào hộp.

Nhấp vào bắt đầu và nó sẽ tự động theo dõi khóa đăng ký đó cho bất kỳ bổ sung, xóa hoặc thay đổi.

Nếu phát hiện bất kỳ thay đổi nào, nó sẽ *xuất một tệp đăng ký được gọi regsync.regtrong cùng thư mục với ứng dụng đang chạy.

* Trong trường hợp có nhiều thay đổi cùng một lúc, nó sẽ đợi trong 5 giây sau lần thay đổi đầu tiên.

Khi / sau khi nhấn nút bắt đầu, nó sẽ theo dõi thư mục mà nó có trong bất kỳ thay đổi nào đối với regsync.regtệp và nếu phát hiện ra thay đổi, nó sẽ xóa TẤT CẢ các mục trong khóa đăng ký bạn đã chọn cục bộ và nhập tệp đăng ký. (Xin lưu ý, nó sẽ không kiểm tra .Regtệp phù hợp với vị trí mà nó đang theo dõi, vì vậy, nếu bạn nhập các vị trí khác nhau trên mỗi máy tính, nó có thể bị hỏng).

Vì vậy, ... bạn có thể chạy ứng dụng này từ dropbox hoặc chia sẻ windows hoặc bất kỳ dịch vụ chia sẻ thư mục nào khác. Chạy nó trên cả hai máy tính và chọn khoá đăng ký để theo dõi.

Ghi chú thêm ...

  • Điều này đòi hỏi .NET framework phiên bản 4.

  • Nó không giám sát các khóa con, bạn có thể chạy các bản sao bổ sung của công cụ mặc dù trong các thư mục khác nhau (tôi đã có ý tưởng để cải thiện điều này, nhưng, chỉ khi mọi người có nhu cầu về công cụ).

  • Mặc dù nó không yêu cầu độ cao UAC, nhưng nó sẽ khiến bạn tăng độ cao mỗi khi nó cố gắng nhập hoặc xuất từ ​​sổ đăng ký (Về cơ bản nó gọi regedit.exe/ reg.exe), vì vậy, tôi khuyên bạn nên chạy chương trình nâng cao ... Nó thực hiện vài lần và nó sẽ trở nên rất khó chịu.

  • Không bảo đảm - Nó nhận được huy hiệu "Hoạt động trên PC của tôi" và tôi đã thử nghiệm nó trên một số máy, nhưng, điều này chưa có đánh giá mã và giờ thử nghiệm ... Bắt đầu kết thúc sau vài giờ.

Ngay cả khi bạn không kết thúc việc sử dụng nó, tôi hy vọng nó hữu ích cho ai đó ngoài kia!

Liên kết tải xuống


Đẹp! Bạn đang giữ nó đóng nguồn?
Ram Rachum

@Ram Rachum - Tôi không thực sự "làm" nguồn mở (toàn bộ dự án) nhiều ... Nếu bất cứ ai có bất kỳ câu hỏi / muốn xem bất cứ điều gì, tôi sẽ rất vui khi cung cấp mã mẫu từ nó ... hoặc chia sẻ mã với bạn bè qua Dropbox .... Nếu bạn có bất kỳ đề xuất hoặc muốn có bất kỳ cải tiến nào, hãy cho tôi biết. ... Tôi vẫn còn là một lập trình viên mới và đã cố gắng tìm hiểu về các hệ thống VCS ... Khi tôi hiểu chúng, tôi có thể tải lên / bắt đầu chia sẻ!
William Hilsum

1
@William; Nguồn mở không cần phải cầu kỳ, chỉ cần nén mã nguồn và tải nó lên cùng với đó là nguồn mở!
Phoshi

@Phoshi -: / điểm tốt ... Có lẽ sớm thôi!
William Hilsum

RegSync v1 sẽ có trong codeplex trong tương lai như nguồn mở? công ty tôi cần mã nguồn kiểm toán trước khi cài đặt bất kỳ ứng dụng hoặc chương trình nào trong môi trường.
Kiquenet

5

Có thể dễ dàng hơn để chạy regedit.exe ở chế độ im lặng với tệp đăng ký có chứa các mục chính xác mà bạn muốn. Bạn có thể đặt từng máy tính để chạy nó từ một vị trí được chia sẻ, vì vậy tất cả những gì bạn cần làm là cập nhật tệp và khi lần chạy tiếp theo của regedit.exe chạy trên mỗi máy tính, chúng sẽ nhận được các mục mới.

cái gì đó như:

regedit.exe /S puttyentries.reg

Để lấy khóa đăng ký từ một máy tính, bạn sẽ sử dụng:

regedit.exe /E puttyentries.reg "registry_key"

Có lẽ sẽ có nhiều cách thanh lịch hơn để tự động hóa toàn bộ quá trình bằng cách sử dụng vbscript hoặc autoit với các chức năng đọc / ghi từ xa cho sổ đăng ký.

Dưới đây là một ví dụ với AutoIt sẽ đồng bộ hóa cứ sau 30 phút với một máy tính từ xa (hãy cẩn thận, tôi thực sự chưa thử nghiệm điều này):

While 1 ;loop indefinitely
    $i1 = 1 ;set initial counter
    While 1 ;loops through all sessions
        $keyname = RegEnumVal("\\REMOTECOMPUTER\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions", $i1) ;reads session names
        If @error <> 0 Then ExitLoop ;exits when no more sessions exist
        $i2 = 1 ;set initial counter
        While 1 ;loops through all value in key until done
            $valuename = RegEnumVal("\\REMOTECOMPUTER\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions" & "\" & $keyname, $i2) ;read value name from remote machine
            If @error <> 0 Then ExitLoop ;errors and escapes when no more values to read
            $type = @extended ;sets registry value type
            $value = RegRead("HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session" & "\" & $keyname, $valuename) ;read value
            RegWrite("HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session" & "\" & $keyname, $valuename, $type, $value) ;write key value to local machine
            $i2 = $i2 + 1 ;increment by 1
        WEnd
        $i1 = $i1 + 1 ;increment by 1
    WEnd
    Sleep(1800000) ;sleep 30 min
WEnd

Tôi sẽ không muốn chỉnh sửa một cách thủ công. regeditCũng có thể trích xuất từ ​​registry trong chế độ im lặng?
Ram Rachum

được chỉnh sửa để thêm tùy chọn đọc, tôi sẽ thấy những gì tôi có thể viết cho một tùy chọn theo kịch bản thanh lịch hơn
MaQleod

1
Điều này có thể phù hợp với anh chàng đã hỏi, nhưng điều này sẽ không đồng bộ xóa cài đặt. Vì vậy, nếu bạn xóa cài đặt putty trên một lần xuất máy chủ, hãy nhập lại trên máy chủ phần của bạn, việc xóa sẽ không xảy ra. Khi bạn xuất và nhập lại vào máy chủ bạn đã xóa một mục cấu hình, mục đã xóa của bạn sẽ được khôi phục.
Zoredache

ok, đã thêm một ví dụ tự động sẽ tự thực hiện toàn bộ quá trình (hoặc ít nhất là nó nên, tôi chưa kiểm tra nó, vì vậy vui lòng sao lưu mọi thứ trước).
MaQleod
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.