Tại sao Windows registry cần thiết?


56

Khi tôi đã gỡ lỗi các vấn đề trong com, cạnh nhau, xử lý dll hell, tất cả trong khi ghét đăng ký windows với niềm đam mê, tôi đã tự hỏi tại sao nó lại cần thiết.

Tôi chưa bao giờ cảm thấy bắt buộc phải đọc toàn bộ cuốn sách về các thực tiễn tốt nhất về đăng ký, và sau đó chỉ "lấy nó".

Tuy nhiên, tôi đã sử dụng Linux và Mac OS và xem xét cách người ta có thể cài đặt nhiều phiên bản Python và thư viện của nó trên cùng một máy tính * nix.

Bởi vì registry có phần định dạng miễn phí (mặc dù xấu) và được sử dụng cho tất cả các mục đích, tôi chưa bao giờ hiểu vấn đề thiết yếu nào mà nó đang cố gắng giải quyết.

Chẳng hạn, Microsoft không muốn bạn cài đặt hai phiên bản MS Office khác nhau. Họ sử dụng đăng ký để thực thi điều này trong khi cài đặt. Giới hạn này là nhân tạo, theo ý kiến ​​của tôi. Nếu họ thực sự quan tâm để cho phép một hành vi khác, họ có thể đã điều chỉnh kiến ​​trúc của họ cho phù hợp.

Trong Mac OS, bạn có thể cài đặt và xóa ứng dụng bằng cách thả chúng vào một thư mục cụ thể.

Vì thế,

A) Vấn đề thiết yếu nào nó đang cố gắng giải quyết? B) Làm thế nào để các hệ điều hành khác giải quyết nó?


2
Các ứng dụng cũng có thể được cài đặt bằng cách Kéo và thả trên Windows. IDE Eclipse là ví dụ đầu tiên xuất hiện trong đầu. Có những người khác, tôi chắc chắn. Sổ đăng ký cũng được sử dụng để cấu hình nhiều khía cạnh khác của hệ điều hành (tôi luôn nghĩ đó là mục đích chính của sự tồn tại của nó) và các chương trình khác, và cũng có thể bị lạm dụng theo mọi cách thú vị và sáng tạo.
Thất vọngWithFormsDesigner

Xem fun.drno.de/flash/howto_turn_windows_into_linux.swf Bước 2 đến 4 có một so sánh thú vị về loại dữ liệu cấu hình này cho windows và linux. ;)
Thất vọngWithFormsDesigner


3
Bạn có thể có hai phiên bản của văn phòng được cài đặt do đó, "giới hạn" bạn đề cập đến không chỉ là nhân tạo của nó hư cấu
Conrad Frix

1
@Việc làm. Tôi đoán tôi có thể đồng ý về điều đó ngoại trừ thực tế rằng vấn đề đó có một giải pháp được chấp nhận, một bản sửa lỗi đăng ký, (trớ trêu không bị mất) liên quan đến việc chạy song song 2007/2003. Khi nào bạn gặp vấn đề này khi bạn muốn chạy hai cài đặt Office cạnh nhau? BTW ở đây là KB Để chạy XP và 97 cạnh nhau
Conrad Frix

Câu trả lời:


42

Hầu hết các câu trả lời khác đều ít nhiều đúng, nhưng (cùng với câu hỏi) họ loại bỏ điểm.

Sổ đăng ký là một trình quản lý cơ sở dữ liệu phân cấp - không hơn không kém.

"Lỗi" mà bạn quy cho sổ đăng ký thực sự độc lập với chính sổ đăng ký. Họ chỉ đơn giản là quyết định các nhà cung cấp khác nhau đã đưa ra về những thứ như cách cài đặt chương trình của họ - nếu bạn lưu trữ thông tin trong một số thời trang / biểu mẫu / container khác, vấn đề tương tự có thể vẫn còn.

Với triết lý "mọi thứ là một tập tin" của Unix, không có gì ngạc nhiên khi các hệ thống Unix (và tương tự, như Linux và MacOS) lưu trữ thông tin dưới dạng các tệp riêng lẻ trong hệ thống tệp. Điều này gần như không khác biệt như nhiều người có thể tin ngay lập tức, vì hệ thống tệp Unix tự nó là một cơ sở dữ liệu phân cấp (hoặc, có thể nói là cơ sở dữ liệu mạng nếu bạn tính đến các liên kết tượng trưng). Sự khác biệt rõ ràng là đăng ký được truy cập thông qua một API riêng, trong đó việc lưu trữ dữ liệu cấu hình trong các tệp cho phép các tệp đó được truy cập, chỉnh sửa, v.v., thông qua cùng một API (và các công cụ) như mọi tệp khác.



11
@Conrad Frix: điều gì khiến bạn nghĩ các giao dịch ACID hoặc ngôn ngữ truy vấn nhất thiết phải là một phần của cơ sở dữ liệu?
Jerry Coffin

1
@Jerry, tất nhiên rồi. Tôi đồng ý với bạn ở đó. Nhưng (bằng chứng là nhận xét của Conrad), nhiều người có khuynh hướng giả định một số điều nhất định về các thuộc tính của một thứ gọi là "cơ sở dữ liệu", vì vậy tôi đoán rằng nỗ lực hòa giải của tôi chỉ là một mất mát.
Nicole

1
@Conrad Frix: dĩ nhiên một số hệ thống tệp không phân cấp. Nhưng, tôi không có nghĩa là Unix FS thứ bậc hơn bất kỳ thứ gì khác - NTFS (chẳng hạn) cũng vậy.
Jerry Coffin

3
@JBRWilkinson: Bạn có những thứ ngược. Có các thành phần khác phụ thuộc vào các vị trí được mã hóa cứng trong sổ đăng ký (giống như có các thành phần trên Unix phụ thuộc vào đường dẫn tệp được mã hóa cứng). Điều đó không thay đổi những gì đăng ký là hoặc mặc dù.
Jerry Coffin

25

Đó là Kho lưu trữ cài đặt - một vị trí tập trung và có phần được chuẩn hóa cho các tùy chọn, cài đặt, cấu hình nhẹ .

Nó trở nên dễ hiểu hơn khi bạn nhìn vào bức tranh lớn cho tất cả những thứ mà HĐH phải lưu trữ cho người dùng và ứng dụng của nó:

các cửa sổ

  • Cài đặt Kho lưu trữ
    • Hệ thống: Windows Registry HKEY_LOCAL_MACHINEvà đặc biệt là phần lớn trong đó\SOFTWARE\Microsoft
    • Toàn hệ thống bên thứ ba: Windows RegistryHKEY_LOCAL_MACHINE
    • Hệ thống lấy người dùng làm trung tâm: Windows Registry HKEY_USERS,[user]\SOFTWARE\Microsoft
    • Lấy người dùng làm trung tâm của bên thứ ba: Windows RegistryHKEY_USERS\[user]\SOFTWARE
  • Các tệp ứng dụng người dùng không cần phải xem C:\Users\[User]\AppData trong các thư mục ẩn
  • Các tệp ứng dụng mà người dùng có thể muốn C:\Users\[User]\ trong các thư mục không bị ẩn được tạo bởi ứng dụng

Mac OS X

  • Cài đặt Kho lưu trữ
    • Hệ thống và bên thứ ba: /Library/Preferences trong com.apple...plisttệp
    • Toàn hệ thống bên thứ ba: /Library/Preferences trong plisttệp của bên thứ ba
    • Hệ thống lấy người dùng làm trung tâm : /Users/[user]/Library/Preferences , giống như trên
    • Trung tâm người dùng của bên thứ ba:, /Users/[user]/Library/Preferences giống như trên
  • Các tệp ứng dụng trên toàn hệ thống mà người dùng không cần phải xem /Library/Application Support
  • Các tệp ứng dụng người dùng không cần phải xem /Users/[user]/Library/Application Support
  • Các tệp ứng dụng mà người dùng có thể muốn /Users/[user]/ trong các thư mục không bị ẩn

Về cơ bản, sổ đăng ký giống hệt với các thư mục của Mac OS X /Library/Preferences và không nhiều hơn hoặc ít hơn.

Việc Mac OS có một trận đấu gần như một đối với các nhóm tổ chức dữ liệu hệ thống và ứng dụng minh họa rằng Windows Registry là một hệ thống hoàn toàn hợp lý, chỉ là một cách làm khác

Bản chất không phải là hệ thống tệp của sổ đăng ký khiến việc sao lưu, khôi phục hoặc di chuyển các phần của nó trở nên khó khăn hơn trong khi để lại các phần khác, vì vậy tôi thích hệ thống Mac hơn, nhưng mục đích gần như giống hệt nhau.

Cả hai hệ điều hành đều có các ứng dụng chọn vi phạm các cấu trúc này ở các mức độ khác nhau, thường là thông qua việc chiếm đoạt một số bối cảnh toàn cầu hơn để tạo các tệp hoặc thư mục không thực sự thuộc về nó. Một số ứng dụng thực sự tạo các thư mục thẳng vào C:\hoặc /không cần hỏi. Điều đó thực sự khiến tôi phát điên!


Nhân tiện, mặc dù bản chất kéo và thả của (hầu hết) Ứng dụng Mac OS rất tuyệt vời, bạn gặp vấn đề tương tự với các phiên bản khác nhau, mặc dù bạn có thể không nhận thấy - vì cài đặt của bạn không được lưu trữ trong .apptập tin riêng của mình, nhưng trong Application Supporthay Preferences, mỗi phiên bản của ứng dụng vẫn sẽ sử dụng các thiết lập tương tự và ảnh hưởng lẫn nhau, trừ trường hợp phiên bản mới hơn một cách rõ ràng quyết định sử dụng một thư mục bằng một tên khác nhau ( IntelliJIDEA70, IntelliJIDEA81, vv)


Đúng, ban đầu, registry bắt đầu như một kho lưu trữ cài đặt, như là một sự thay thế cho các tệp INI, tuy nhiên ngày nay, nó thường được sử dụng như một kho lưu trữ dữ liệu chung, do đó phát sinh cồng kềnh.
Synetech

20

Tôi chưa bao giờ hiểu vấn đề thiết yếu mà nó đang cố gắng giải quyết.

Trước khi đăng ký Windows, Windows đã sử dụng tập tin .INI. Trong bài đăng trên blog Tại sao các tệp INI không được chấp nhận trong sổ đăng ký? Raymond Chen liệt kê các vấn đề tồn tại với các tệp .INI đang cố gắng giải quyết. Ông cũng liệt kê các vấn đề mà các tệp cấu hình XML chia sẻ với các tệp .ini cũ. Đây có lẽ là những gì đáng xem vì đó là những gì nhiều ứng dụng sử dụng ngày nay.

... Con lắc đã quay trở lại các tệp cấu hình văn bản, nhưng lần này, chúng là XML. Điều này mở lại nhiều vấn đề mà các tệp INI gặp phải, nhưng bạn có lợi thế lớn là không ai ghi vào các tệp cấu hình XML; họ chỉ đọc từ họ. Các tệp cấu hình XML không được sử dụng để lưu trữ cài đặt người dùng; họ chỉ chứa thông tin về chính chương trình. Hãy xem xét lại những vấn đề đó.

  • Bảo mật tệp XML không đủ chi tiết. Nhưng vì tệp cấu hình XML là chỉ đọc, nên sự phản đối chính bị bỏ qua. (Nhưng nếu bạn chỉ muốn quản trị viên có quyền đọc các phần cụ thể của XML thì bạn sẽ gặp rắc rối.)
  • Vì các tệp cấu hình XML là chỉ đọc, bạn không phải lo lắng về nhiều người viết.
  • Các tệp cấu hình XML có thể bị từ chối dịch vụ. Bạn vẫn có thể mở chúng độc quyền và khóa các quy trình khác.
  • Các tệp XML chỉ chứa các chuỗi. Nếu bạn muốn lưu trữ dữ liệu nhị phân, bạn phải mã hóa bằng cách nào đó.
  • Phân tích một tệp XML tương đối chậm. Nhưng vì chúng chỉ đọc, bạn có thể lưu trữ an toàn kết quả được phân tích cú pháp, do đó bạn chỉ cần phân tích cú pháp một lần.
  • Các chương trình phân tích các tệp XML theo cách thủ công, nhưng định dạng XML đã bị khóa, do đó bạn không thể mở rộng nó ngay cả khi bạn muốn. Hy vọng rằng, các chương trình đó sử dụng trình phân tích cú pháp XML tuân thủ tiêu chuẩn thay vì tự chạy, nhưng tôi sẽ không ngạc nhiên nếu mọi người viết trình phân tích cú pháp XML tùy chỉnh của riêng họ, điều đó làm nghẹn, nói, xử lý các hướng dẫn hoặc chuỗi dài hơn 70 ký tự.
  • Các tệp XML không có giới hạn kích thước.
  • Các tệp XML không có vị trí mặc định.

Tất cả điều này giả định rằng ứng dụng thực sự không bao giờ ghi vào các tệp cấu hình của chúng mà tôi không đồng ý nhưng điều đó sẽ khiến mọi thứ tồi tệ hơn không tốt hơn.


2
Ít nhất có một chút mỉa mai là nhiều ứng dụng hoàn toàn từ bỏ đăng ký hoàn toàn ủng hộ các tệp INI một lần nữa (không quá nhiều với XML) nhờ vào sự gia tăng mức độ phổ biến của tính di động của Nott, nhờ vào các ổ đĩa flash.
Synetech

11

Lý thuyết của tôi là động lực không phải là một trong những điều trên. Thay vào đó, nó là một biện pháp chống vi phạm bản quyền. Trong những ngày trước khi đăng ký, bạn thường có thể sao chép toàn bộ chương trình từ máy này sang máy khác. Tìm .DLL và bạn đã tốt để đi. Việc đăng ký làm cho điều này RẤT NHIỀU để làm.

Có rất ít việc đăng ký hoàn thành mà tôi nghĩ sẽ không được phục vụ tốt hơn bởi một tệp cấu hình cho mỗi mục đích.

(2014) Để mở rộng lý luận của tôi ở đây một chút: Tôi thấy đăng ký là một đối tượng của thần. Chúng ta đều biết đó là một antipotype.


7
Vì vậy, microsoft đã tạo ra một cái gì đó đặc biệt để hạn chế những gì người dùng có thể dễ dàng làm? ... nghe có vẻ đúng.
dan_waterworth

Chắc chắn là một mô hình chống. Những suy nghĩ thú vị.
Brad Thomas

Quan điểm thú vị nhưng tại thời điểm đăng ký được giới thiệu, đó vẫn là kỷ nguyên DOS + Windows nơi cuộc chiến giữa cướp biển và bảo vệ quyền sao chép đang ở đỉnh điểm với rất nhiều phép thuật đen nhờ khả năng tiếp cận phần cứng. Không chắc ai đó sẽ chuyển tiếp vào sổ đăng ký để bảo vệ quyền sao chép tại thời điểm đó.
Codism

6

Hiểu biết thô sơ của tôi là sổ đăng ký được thiết kế để trở thành một loại kho cài đặt, thay thế các tệp .ini đã từng được sử dụng.

(NB, một sự hiểu biết thô thiển, vì vậy điều này có thể không chính xác).


5

A) Tôi đồng ý với câu trả lời của Tim.

B) Các hệ điều hành khác sử dụng các phương pháp khác để lưu trữ cài đặt chương trình, ví dụ: Unix thường đặt các tệp trong / etc (tệp chung) và trong thư mục người dùng trong các thư mục ẩn khác nhau (cài đặt người dùng). Vì vậy, tất cả họ sử dụng một số hình thức đăng ký, ngoại trừ trong một số trường hợp, nó được phân phối.


3

Theo tôi hiểu nó (không nhất thiết phải thưởng thức nó)

A) Để cung cấp "vị trí tập trung" nơi mọi chương trình có thể lưu trữ thông tin về cài đặt hoặc cài đặt của nó. Thông tin này sau đó có thể được sử dụng bởi các chương trình theo bất kỳ cách nào họ quyết định. Tùy biến, chống vi phạm bản quyền, vv

Tất cả các thông tin trong cấu trúc này bảo vệ nó, nghĩ về ý tưởng động vật đổ xô vào nhau, an toàn hơn về số lượng. Nếu mỗi bit thông tin là tệp ini của riêng nó thì một số người dùng có thể xóa nó một cách bất chợt. Họ vẫn có thể làm điều đó bằng cách vào sổ đăng ký nhưng nhiều người xem nó như một hộp đen và sẽ không chạm vào nó vì sợ phá vỡ hệ thống của họ.

B) Mac OS sử dụng các tệp riêng lẻ giống như các cửa sổ tệp ini được sử dụng trước khi đăng ký xuất hiện.


3

Mục đích rõ ràng của Registry là hoạt động như một kho lưu trữ duy nhất cho tất cả cấu hình và cài đặt dữ liệu và loại bỏ sự phụ thuộc vào các tệp cấu hình.

Trên các hệ điều hành khác, modus operandi là lưu trữ thông tin dành riêng cho ứng dụng (như tệp cấu hình) vào các thư mục dành riêng cho ứng dụng ẩn trong thư mục chính của người dùng. (Ví dụ: trò chơi Aquaria lưu thông tin cấu hình trong $HOME/.Aquaria.) Tệp cài đặt toàn cầu được lưu trữ trong /etc/.

Máy Mac tự làm việc của mình: các plisttệp dành riêng cho ứng dụng được lưu trữ (tôi tin) trong thư mục của người dùng hoặc hệ thống Library.


3

Vấn đề không nằm ở triết lý đăng ký mà là do thiết kế. Sổ đăng ký được HĐH sử dụng để tra cứu thông tin quan trọng liên quan đến chương trình đang được tải. Mặc dù thay vì tải thông tin khi cần, nó sẽ tải tất cả vào lúc khởi động, điều này "có thể" ảnh hưởng đến hiệu suất của hệ thống. Hệ thống cũng bị lạm dụng triệt để khi các nhà cung cấp tải nó với rất nhiều thông tin và nhiều lần họ không xóa thông tin khi gỡ cài đặt phần mềm.

Không giống như Unix nơi mọi thứ được lưu trữ n tệp và được tải khi cần thiết. Hệ điều hành theo cách này không dựa vào các kỹ năng lập trình của Nhà cung cấp để ảnh hưởng đến hiệu suất của nó ...


2

Mặc dù tôi không thể nhận xét về các hệ điều hành khác, sổ đăng ký cũng giúp duy trì cấu hình của ứng dụng trong quá trình nâng cấp hoặc gỡ cài đặt / cài đặt lại. Nếu tất cả cấu hình nằm trong tệp .ini cần được thay thế do nâng cấp có thêm tính năng, bạn có thể gặp khó khăn hoặc phải tạo quy trình tùy chỉnh để hợp nhất dữ liệu cấu hình vào tệp ini đến.

Tuy nhiên, với dữ liệu trong sổ đăng ký, bạn có thể sử dụng gói trình cài đặt chung (WIX, InstallShield, v.v.) sẽ xử lý việc gỡ cài đặt / cài đặt lại các tệp mà không cần chạm vào cài đặt ứng dụng.


1

(tất cả A. Không chắc chắn về B)

Tôi tin rằng điều này thực sự đi xuống điểm (lịch sử) rằng đăng ký hoạt động như một loại giao diện phổ biến cho các cài đặt ứng dụng.

Có một ứng dụng? Bạn muốn lưu trữ một thiết lập phạm vi người dùng? Bung nó trong sổ đăng ký.

Không cần "đảm bảo hồ sơ người dùng", không cần truy cập trực tiếp vào hệ thống tập tin. Win32 chăm sóc tất cả những thứ đó.


1

Đó là một cách để tạo ra một cái gì đó mới, không quen thuộc và cấm kỵ đối với hầu hết người dùng, vì vậy họ sẽ để nó một mình. Các tập tin .ini và autoexec.bat có thể dễ dàng bị xóa hoặc thay đổi.

Thay đổi Cài đặt đăng ký, oh my!


1

Ngoài việc đơn giản là lưu trữ các cài đặt ứng dụng, sổ đăng ký là phương tiện mà các chương trình và thành phần định vị các chương trình và thành phần khác . Cuối cùng, tôi nghĩ đây là lý do tại sao nó tập trung vào một cơ sở dữ liệu duy nhất chứ không phải trải rộng trên hàng ngàn tệp văn bản hoặc xml.

Ví dụ: một thành phần thực hiện, giả sử, chính hiệu ứng video 'đăng ký' trong sổ đăng ký, cho phép các ứng dụng liên quan đến video khác biết về sự tồn tại của nó và sử dụng nó. Bằng cách có một hệ thống tập trung cho việc này, nó sẽ tránh được những gì sẽ gây rối nghiêm trọng khi hàng ngàn hệ thống và ứng dụng sử dụng các phương pháp khác nhau để đạt được mức độ tích hợp đó.

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.