Ponieważ debugowałem problemy z komunikacją obok siebie, zajmowałem się piekłem dll, a jednocześnie nienawidziłem rejestru systemu Windows z pasją, zastanawiałem się, dlaczego jest to potrzebne.
Nigdy nie czułem się zmuszony do przeczytania całej książki na temat najlepszych praktyk w rejestrze, a następnie po prostu „pobierz”.
Korzystałem jednak z systemu Linux i Mac OS i przyglądam się sposobom instalowania wielu wersji Pythona i jego bibliotek na tym samym komputerze * nix.
Ponieważ rejestr ma nieco darmowy (choć brzydki) format i jest używany do różnych celów, nigdy nie zrozumiałem, jaki zasadniczy problem próbuje rozwiązać.
Na przykład Microsoft nie chce, aby dwie różne wersje MS Office były instalowane obok siebie. Używają rejestru, aby wymusić to podczas instalacji. Moim zdaniem to ograniczenie jest sztuczne. Gdyby naprawdę chcieli pozwolić na inne zachowanie, mogliby odpowiednio dostosować swoją architekturę.
W systemie Mac OS możesz instalować i usuwać aplikacje, po prostu upuszczając je w określonym folderze.
Więc,
A) Jaki istotny problem próbuje rozwiązać? B) Jak rozwiązują to inne systemy operacyjne?
źródło
Odpowiedzi:
Większość pozostałych odpowiedzi jest mniej lub bardziej poprawna, ale (wraz z pytaniem) w pewnym sensie brakuje im sensu.
Rejestr jest hierarchicznym menedżerem baz danych - niczym więcej i niczym innym.
„Błędy” przypisywane do rejestru są naprawdę niezależne od samego rejestru. Są to po prostu decyzje podejmowane przez różnych dostawców, dotyczące np. Sposobu instalowania programów - jeśli przechowujesz informacje w innej formie / formie / kontenerze, mogą pozostać te same problemy.
Biorąc pod uwagę filozofię Unixa „wszystko jest plikiem”, nie powinno być (ani nie powinno być) zaskoczeniem, że systemy Unix (i podobne, takie jak Linux i MacOS) przechowują informacje jako pojedyncze pliki w systemie plików. Nie jest to prawie tak różne, jak wiele osób może od razu uwierzyć, ponieważ system plików Unix sam w sobie jest hierarchiczną bazą danych (lub, być może, sieciową bazą danych, jeśli weźmiesz pod uwagę dowiązania symboliczne). Rażąca różnica polega na tym, że dostęp do rejestru uzyskuje się za pomocą oddzielnego interfejsu API, przy czym przechowywanie danych konfiguracyjnych w plikach umożliwia dostęp do tych plików, ich edycję itp. Za pośrednictwem tego samego interfejsu API (i narzędzi), co innych plików.
źródło
To repozytorium ustawień - scentralizowana i nieco znormalizowana lokalizacja preferencji, ustawień, lekkich profili .
Łatwiej jest zrozumieć, gdy spojrzysz na ogólny obraz wszystkich rzeczy, które system operacyjny musi przechowywać dla swoich użytkowników i aplikacji:
Windows
HKEY_LOCAL_MACHINE
a konkretnie duża jego część\SOFTWARE\Microsoft
HKEY_LOCAL_MACHINE
HKEY_USERS
,[user]\SOFTWARE\Microsoft
HKEY_USERS\[user]\SOFTWARE
C:\Users\[User]\AppData
w ukrytych folderachC:\Users\[User]\
w nie ukrytych folderach utworzonych przez aplikacjęMac OS X
/Library/Preferences
wcom.apple...plist
plikach/Library/Preferences
wplist
plikach zewnętrznych/Users/[user]/Library/Preferences
tak samo jak powyżej/Users/[user]/Library/Preferences
tak samo jak powyżej/Library/Application Support
/Users/[user]/Library/Application Support
/Users/[user]/
w nie ukrytych folderachZasadniczo rejestr jest identyczny z folderami Mac OS X
/Library/Preferences
i niewiele więcej.Fakt, że Mac OS ma prawie jeden do jednego dopasowanie do grup organizacyjnych danych systemowych i aplikacji, pokazuje, że rejestr systemu Windows jest całkowicie uzasadnionym systemem, który jest po prostu innym sposobem robienia rzeczy.
Charakter rejestru niezwiązany z systemem plików utrudnia tworzenie kopii zapasowych, przywracanie lub migrację jego części, pozostawiając inne, więc wolę system Mac, ale cel jest prawie identyczny.
Oba systemy operacyjne mają aplikacje, które wybierają naruszanie tych struktur w różnym stopniu, zwykle poprzez uzurpowanie sobie bardziej globalnego kontekstu do tworzenia plików lub folderów, które tak naprawdę nie należą. Niektóre aplikacje faktycznie tworzą foldery bezpośrednio
C:\
lub/
bez pytania. To naprawdę doprowadza mnie do szału!Nawiasem mówiąc, podczas gdy przeciąganie i upuszczanie (większości) aplikacji Mac OS jest genialne, masz podobny problem z różnymi wersjami obok siebie, chociaż prawdopodobnie nie zauważasz - ponieważ twoje ustawienia nie są przechowywane w
.app
sobie, ale w plikuApplication Support
lubPreferences
każda wersja aplikacji będzie nadal korzystać z tych samych ustawień i wpływają na siebie nawzajem, chyba że nowsza wersja wyraźnie postanawia wykorzystać folder pod inną nazwą (IntelliJIDEA70
,IntelliJIDEA81
etc.)źródło
Przed rejestrem system Windows używał plików .INI. W poście na blogu Dlaczego pliki INI są przestarzałe na rzecz rejestru? Raymond Chen wylicza problemy, które istniały w plikach .INI, które próbowano rozwiązać. Wymienia także problemy, które dzielą pliki konfiguracyjne XML ze starymi plikami .ini. Prawdopodobnie jest to, na co warto spojrzeć, ponieważ właśnie z tego korzysta dziś wiele aplikacji.
Wszystko to zakłada, że aplikacja rzeczywiście nigdy nie zapisuje do swoich plików konfiguracyjnych, co do których nie zgadzam się, ale pogorszyłoby to sytuację.
źródło
Moja teoria mówi, że siłą napędową nie jest żadna z powyższych. Był to raczej środek antypiracki. W dniach poprzedzających rejestr można ogólnie po prostu skopiować cały program z jednego komputera na drugi. Znajdź pliki .DLL i już możesz jechać. Rejestr sprawia, że DUŻO jest to trudniejsze.
Rejestr osiąga bardzo niewiele, co moim zdaniem nie byłoby lepiej obsługiwane przez jeden plik konfiguracyjny dla jednego celu.
(2014) Aby nieco rozwinąć moje rozumowanie: rejestr widzę jako obiekt boga. Wszyscy wiemy, że to antypattern.
źródło
Z grubsza rozumiem, że rejestr został zaprojektowany jako rodzaj repozytorium ustawień, zastępując pliki .ini, które były używane.
(Uwaga, prymitywne zrozumienie, więc może to być niepoprawne).
źródło
A) Zgadzam się z odpowiedzią Tima.
B) Inne systemy operacyjne używają innych metod przechowywania ustawień programów, na przykład Unix zwykle umieszcza pliki w / etc (pliki globalne) oraz w folderze użytkownika w różnych ukrytych folderach (ustawienia użytkownika). Wszyscy używają jakiejś formy rejestru, z tym że w niektórych przypadkach jest on rozpowszechniany.
źródło
Jak rozumiem (niekoniecznie cieszę się)
A) Aby dać „scentralizowaną lokalizację”, w której dowolny program może przechowywać informacje o jego instalacji lub konfiguracji. Informacje te mogą być następnie wykorzystane przez programy w dowolny sposób. Personalizacja, antypiractwo itp.
Wszystkie te informacje, które są w tej strukturze, w pewien sposób je chronią, pomyśl o idei gromadzących się zwierząt, większe bezpieczeństwo w liczbach. Jeśli każdy kawałek informacji byłby własnym plikiem ini, to jakiś użytkownik mógłby potencjalnie usunąć go kaprysem. Nadal mogą to zrobić, wchodząc do rejestru, ale wielu uważa to za czarną skrzynkę i nie dotknie jej z obawy przed zerwaniem systemu.
B) Mac OS używa pojedynczych plików, podobnie jak okna plików ini używane przed pojawieniem się rejestru.
źródło
Oczywistym celem rejestru jest działanie jako pojedyncze repozytorium dla wszystkich danych konfiguracyjnych i ustawień oraz usunięcie zależności od plików konfiguracyjnych.
W innych systemach operacyjnych modus operandi polega na przechowywaniu informacji specyficznych dla aplikacji (takich jak pliki konfiguracyjne) w ukrytych katalogach specyficznych dla aplikacji w katalogu osobistym użytkowników. (Na przykład gra Aquaria przechowuje informacje o konfiguracji w
$HOME/.Aquaria
.) Pliki ustawień globalnych są przechowywane w/etc/
.Komputery Mac działają samodzielnie:
plist
pliki specyficzne dla aplikacji są przechowywane (sądzę) w katalogu użytkownika lub systemuLibrary
.źródło
Problem nie leży w filozofii rejestru, ale w jego projekcie. Rejestr jest używany przez system operacyjny do wyszukiwania ważnych informacji dotyczących ładowanego programu. Chociaż zamiast ładować informacje w razie potrzeby, ładuje je wszystkie podczas uruchamiania, co „może” wpłynąć na wydajność systemu. System jest również poważnie nadużywany, ponieważ dostawcy ładują go z dużą ilością informacji i często nie usuwają informacji po odinstalowaniu oprogramowania.
W przeciwieństwie do Uniksa, w którym wszystko jest przechowywane n plików i ładowane w razie potrzeby. System operacyjny w ten sposób nie zależy od umiejętności programistycznych dostawcy, aby wpłynąć na jego wydajność ...
źródło
Chociaż nie mogę komentować innych systemów operacyjnych, rejestr pomaga również utrzymać konfigurację aplikacji podczas procesu aktualizacji lub odinstalowywania / ponownej instalacji. Jeśli cała konfiguracja znajdowała się w pliku .ini, który wymagał wymiany ze względu na aktualizację, która dodała funkcje, możesz napotkać trudności lub utworzyć niestandardowy proces w celu scalenia danych konfiguracyjnych w przychodzącym pliku ini.
Jednak z danymi w rejestrze można korzystać ze wspólnego pakietu instalatora (WIX, InstallShield itp.), Który będzie obsługiwał odinstalowywanie / ponowne instalowanie plików bez zmiany ustawień aplikacji.
źródło
(wszystkie A. Nie jestem pewien co do B)
Uważam, że tak naprawdę jest to (historyczny) punkt, w którym rejestr działa jako rodzaj wspólnego interfejsu dla ustawień aplikacji.
Masz aplikację? Chcesz zapisać ustawienia o zasięgu użytkownika? Znalazłem go w rejestrze.
Nie trzeba „zapewniać profili użytkowników”, nie trzeba w ogóle uzyskiwać bezpośredniego dostępu do systemu plików. Win32 się tym wszystkim zajmuje.
źródło
Był to sposób na stworzenie czegoś nowego, nieznanego i tabu dla większości użytkowników, aby zostawili to w spokoju. Pliki .ini i autoexec.bat można łatwo usunąć lub zmienić na gorsze.
Zmieniam ustawienia rejestracji, ojej!
źródło
Oprócz zwykłego przechowywania ustawień aplikacji, rejestr jest sposobem, w jaki programy i komponenty lokalizują inne programy i komponenty . Ostatecznie myślę, że właśnie dlatego jest scentralizowany w jednej bazie danych, w przeciwieństwie do tysięcy plików tekstowych lub XML.
Na przykład komponent, który wykonuje, powiedzmy, efekty wideo „rejestruje się” w rejestrze, umożliwiając innym aplikacjom związanym z wideo rozpoznanie jego istnienia i korzystanie z niego. Dzięki scentralizowanemu systemowi pozwala to uniknąć poważnego bałaganu, ponieważ tysiące systemów i aplikacji używają różnych metod do osiągnięcia tego poziomu integracji.
źródło