Windows kayıt defteri neden gerekli?


56

Com, yan yana sorunların hata ayıklama gibi dll cehennem ile ele, tüm tutku ile windows kayıt nefret ederken, neden gerekli olduğunu merak ediyordum.

Kayıt defteri en iyi uygulamalarıyla ilgili bir kitabın tamamını okumaya mecbur hissetmemiştim, ve sonra sadece "anladım".

Bununla birlikte, Linux ve Mac OS kullandım ve aynı * nix bilgisayarına Python ve kitaplıklarının birden fazla sürümünü nasıl kurabileceğime baktım.

Kayıt defteri biraz özgür olsa da (çirkin olsa da) ve her türlü amaç için kullanıldığından, ne tür bir sorunu çözmeye çalıştığını anlamadım.

Örneğin, Microsoft yan yana kurulu iki farklı MS Office sürümüne sahip olmanızı istemiyor. Kurulum sırasında bunu uygulamak için kayıt defteri kullanırlar. Bu sınırlama bence yapaydır. Farklı bir davranışa izin vermeyi gerçekten önemserlerse, mimarilerini buna göre ayarlayabilirlerdi.

Mac OS'ta uygulamaları yalnızca belirli bir klasöre bırakarak yükleyebilir ve kaldırabilirsiniz.

Yani,

A) Hangi temel problemi çözmeye çalışıyor? B) Diğer işletim sistemleri bunu nasıl çözer?


2
Uygulamalar, Windows'ta Sürükle ve Bırak yöntemiyle de yüklenebilir. Eclipse IDE akla gelen ilk örnektir. Başkaları da var, eminim. Kayıt defteri ayrıca işletim sisteminin diğer birçok yönünü (her zaman varlığının asıl amacı olduğunu düşündüm ) ve diğer programları yapılandırmak için kullanılır ve ayrıca her türlü ilginç ve yaratıcı şekilde kötüye kullanılabilir.
SinirliFormsDesigner ile

Bkz. Fun.drno.de/flash/howto_turn_windows_into_linux.swf Adım 2 ila 4, pencereler ve linux için bu tür yapılandırma verilerinin eğlenceli bir karşılaştırmasını yapar. ;)
FrustratedWithFormsDesigner


3
İki ofis sürümü kurmuş olabilirsiniz, bu yüzden bahsettiğiniz "sınırlama" sadece kurgusal
Conrad Frix

1
@İş. Sanırım, sorunun kabul edilen bir çözümü, bir kayıt defteri düzeltmesi (ironi kaybedilmedi) olduğu ve bunun 2007/2003 yıllarında yan yana yürütülmesi anlamına geldiği konusunda hemfikir olabilirim. İki Office kurulumunu yan yana çalıştırmak istediğiniz bu sorunu ne zaman yaşadınız? BTW burada KB XP ve 97'yi yan yana çalıştırmak için
Conrad Frix

Yanıtlar:


42

Diğer cevapların çoğu aşağı yukarı doğrudur, ancak (soru ile birlikte) bu noktayı kaçırmaktadırlar.

Kayıt defteri, hiyerarşik bir veritabanı yöneticisidir - daha fazla ve daha az hiçbir şey.

Kayıt defterine atfedilen "hatalar" gerçekten kayıt defterinden bağımsızdır. Bunlar basitçe, çeşitli üreticilerin programlarını nasıl kuracakları konusunda bazı kararlar veriyorlar - bilgiyi başka bir şekilde / formda / konteynerde saklarsanız, aynı problemler kalabilir.

Unix'in "her şey bir dosya" felsefesi olduğu göz önüne alındığında, Unix'in (ve benzerleri, Linux ve MacOS gibi) sistemlerinin, bilgileri dosya sisteminde ayrı ayrı dosyalar olarak saklaması şaşırtıcı değildir (ya da olması gerekir). Bu, Unix dosya sisteminin kendisi hiyerarşik bir veritabanı olduğundan (veya sembolik linkleri hesaba katarsanız tartışmalı bir ağ veritabanı) olduğu için, hemen hemen pek çok kişinin hemen inanabileceği kadar farklı değildir. Göze çarpan fark, kayıt defterine ayrı bir API üzerinden erişilmesidir; burada yapılandırma verilerinin dosyalara kaydedilmesi, bu dosyalara diğer API'lerle aynı API (ve araçlar) aracılığıyla erişilebilmesini, düzenlenebilmesini vb. Sağlar.



11
@Conrad Frix: ACID işlemlerinin veya bir sorgu dilinin mutlaka bir veritabanının parçası olduğunu düşündüren nedir?
Jerry Coffin

1
Tabii @ Jerry. Orada seninle aynı fikirdeyim. Ancak (Conrad'ın yorumunda da belirtildiği gibi) birçoğunun "veritabanı" olarak adlandırılan bir şeyin özellikleri hakkında bazı şeyleri kabul etme eğilimi vardır, bu yüzden arabuluculuk girişimin sadece kaybetmeyi kaybettiği sanırım.
Nicole,

1
@Conrad Frix: Bazı dosya sistemleri elbette hiyerarşik değildir. Ancak, Unix FS'nin diğerlerinden daha hiyerarşik olduğunu kastetmedim - NTFS de (örneğin).
Jerry Coffin

3
@JBRWilkinson: Geride bir şeyleriniz var. Orada diğer kayıt kodlanmış konumlarına bağlı bileşenler (sadece sabit kodlanmış dosya yolları bağlıdır Unix üzerinde bileşenleri olduğu gibi). Bu, kayıt defterinin ne olduğunu veya olsa ne değiştirdiğini değiştirmez.
Jerry Coffin

25

Bu bir Ayarlar Deposu - tercihler, ayarlar ve hafif profiller için merkezi ve biraz standart bir yer .

Bir işletim sisteminin kullanıcıları ve uygulamaları için saklaması gereken her şey için büyük resme baktığınızda anlamak daha kolay hale gelir:

pencereler

  • Ayarlar Deposu
    • Sistem: Windows Kayıt Defteri HKEY_LOCAL_MACHINEve özellikle bunun içinde\SOFTWARE\Microsoft
    • Sistem genelinde üçüncü taraf: Windows Kayıt DefteriHKEY_LOCAL_MACHINE
    • Sistem kullanıcı merkezli: Windows Kayıt Defteri HKEY_USERS,[user]\SOFTWARE\Microsoft
    • Üçüncü taraf kullanıcı merkezli: Windows Kayıt DefteriHKEY_USERS\[user]\SOFTWARE
  • Bir kullanıcının C:\Users\[User]\AppData gizli klasörlerde görmesi gerekmeyen uygulama dosyaları
  • Bir kullanıcının C:\Users\[User]\ uygulama tarafından oluşturulan gizli olmayan klasörlerde isteyebileceği uygulama dosyaları

Mac OS X

  • Ayarlar Deposu
    • Sistem ve üçüncü taraf: /Library/Preferences in com.apple...plistdosyaları
    • Sistem genelinde /Library/Preferences üçüncü taraf : üçüncü taraf plistdosyalarında
    • Sistem kullanıcı merkezli: /Users/[user]/Library/Preferences yukarıdakiyle aynı
    • Üçüncü taraf kullanıcı merkezli: /Users/[user]/Library/Preferences yukarıdakiyle aynı
  • Bir kullanıcının görmesi gerekmeyen sistem çapında uygulama dosyalarını /Library/Application Support
  • Bir kullanıcının görmesi gerekmeyen uygulama dosyaları /Users/[user]/Library/Application Support
  • Bir kullanıcının /Users/[user]/ gizli olmayan klasörlerde isteyebileceği uygulama dosyaları

Temel olarak, kayıt defteri Mac OS X'in klasörleriyle aynıdır /Library/Preferences ve çok az ya da çok değildir.

Mac OS'nin kurumsal sistem ve uygulama verileri grupları arasında bire bir eşleşmesi olması, Windows Kayıt Defteri'nin sadece farklı bir işlem yapmanın tamamen haklı bir sistem olduğunu göstermektedir

Kayıt defterinin dosya dışı yapısı, diğerlerinden ayrılırken bazı kısımlarının yedeklenmesini, geri yüklenmesini veya taşınmasını zorlaştırır, bu yüzden Mac sistemini tercih ederim, ancak amaç neredeyse aynıdır.

Her iki işletim sistemi de, bu yapılara farklı derecelerde ihlal etmeyi seçen uygulamalara sahiptir, genellikle oraya ait olmayan dosya veya klasörler oluşturmak için daha genel bir bağlamı kullanarak. Bazı uygulamalar aslında doğrudan C:\veya /sormadan klasörler oluşturur . Bu beni gerçekten delirtiyor!


Bu arada, (çoğu) Mac OS Uygulamalarının sürükle ve bırak özelliği mükemmel olsa da, muhtemelen farketmemiş olsanız da, ayarlarınız saklanmadığından, farklı sürümlerde yan yana benzer bir sorununuz var. içinde .appdosyanın kendisinde, ama Application Supportya Preferences, hala aynı ayarları kullanmak ve daha yeni bir sürümü açıkça farklı bir isimle bir klasör kullanmaya karar verir sürece, birbirlerini etkileyecek uygulamanın her sürümü ( IntelliJIDEA70, IntelliJIDEA81vs.)


Doğru, kayıt defteri başlangıçta bir ayar deposu olarak, INI dosyalarının yerine geçmeye başlamış, ancak bu günlerde genellikle genel bir veri deposu olarak kullanılıyor, dolayısıyla şişirilmiş kovanlar.
Synetech

20

Hangi temel sorunu çözmeye çalıştığını hiç anlamadım.

Kayıt defterinden önce, Windows .INI dosyaları kullandı. Blog yazısında INI dosyaları neden kayıt defteri lehine kaldırıldı? Raymond Chen, çözülmeye çalışılan .INI dosyalarında var olan sorunları sıralar. Ayrıca, XML yapılandırma dosyalarının eski .ini dosyalarıyla paylaştığı sorunları da sıralar. Muhtemelen, bugün pek çok uygulamanın kullandığı noktaya bakmaya değer.

... sarkaç, metin yapılandırma dosyalarına geri döndü, ancak bu kez XML. Bu, INI dosyalarının sahip olduğu sorunların çoğunu yeniden açar, ancak kimsenin XML yapılandırma dosyalarına yazmadığı büyük bir avantaja sahip olursunuz; sadece onlardan okurlar. XML yapılandırma dosyaları kullanıcı ayarlarını saklamak için kullanılmaz; sadece programın kendisi hakkında bilgi içerirler. Bu konulara tekrar bakalım.

  • XML dosya güvenliği yeterince ayrıntılı değil. Ancak, XML yapılandırma dosyası salt okunur olduğu için birincil itiraz yanlıştır. (Ancak yalnızca yöneticilerin XML'in belirli bölümlerini okuma iznine sahip olmasını istiyorsanız, başınız dertte demektir.)
  • XML yapılandırma dosyaları salt okunur olduğundan, birden çok yazar için endişelenmenize gerek yoktur.
  • XML yapılandırma dosyaları hizmet reddine neden olabilir. Hala onları açabilir ve diğer işlemleri kilitleyebilirsiniz.
  • XML dosyaları sadece dizeler içeriyor. İkili verileri saklamak istiyorsanız, bir şekilde kodlamanız gerekir.
  • Bir XML dosyasının ayrıştırılması nispeten yavaş. Ancak salt okunur olduklarından, ayrıştırılan sonucu güvenli bir şekilde önbelleğe alabilirsiniz, bu nedenle yalnızca bir kez ayrıştırmanız gerekir.
  • Programlar, XML dosyalarını manuel olarak ayrıştırır, ancak XML biçimi zaten kilitlidir, bu nedenle istediğiniz olsa bile genişletemezsiniz. Umarım, bu programlar kendi yöntemlerini kullanmak yerine standartlara uygun bir XML ayrıştırıcı kullanırlar, ancak insanlar, 70 karakterden uzun talimatlar veya dizgileri boğan, örneğin işleme koyan kendi özel XML ayrıştırıcılarını yazarlarsa şaşırmam.
  • XML dosyalarının boyut sınırı yoktur.
  • XML dosyaları varsayılan bir konuma sahip değildir.

Bütün bunlar, uygulamanın benim üzerinde hiçbir zaman üzerinde anlaşma yapmadığım ancak işleri daha iyi hale getirmeyecek olan yapılandırma dosyalarına yazmadığını varsaymaktadır.


2
Flash sürücüler sayesinde, “taşınabilirliğin” popülaritesinin artması nedeniyle, pek çok uygulamanın, artık INI dosyaları lehine (XML ile pek de değil) tekrar kayıt defterini tamamen kullanması biraz ironik.
Synetech

11

Benim teorim, itici güç yukarıdakilerin hiçbiri değil. Aksine, bir korsanlıkla mücadele önlemiydi. Kayıt öncesi günlerde genellikle bütün bir programı bir makineden diğerine kopyalayabilirsiniz. .DLL’leri bulun ve gitmeniz iyi oldu. Kayıt defteri bu ÇOK yapmak zorlaştırır.

Kayıt defterinin, amaç başına bir yapılandırma dosyası tarafından daha iyi hizmet edilmeyeceğini düşündüğümü başardığı çok az şey var.

(2014) Buradaki gerekçemi biraz genişletmek için: Kayıt defterini bir tanrı nesnesi olarak görüyorum. Hepimiz bunun bir antipattern olduğunu biliyoruz.


7
Böylece microsoft, kullanıcıların kolayca yapabileceklerini sınırlamak için özel olarak bir şeyler yarattı.
dan_waterworth

Kesinlikle bir anti-patern. İlginç düşünceler.
Brad Thomas,

ilginç bir bakış açısı var ancak kayıtlar yapıldığı sırada, donanım erişilebilirliği sayesinde korsanlarla sağ koruma arasındaki savaşın zirvede olduğu DOS + Windows dönemi. Bazılarının o anda kopya hakkı koruması için kayıt defterine geçmesi pek mümkün değildir.
Codism,

6

Ham anlayışıma göre, kayıt defteri kullanılan bir .ini dosyalarını aşan bir tür ayar repositry'si olarak tasarlandı.

(NB, kaba bir anlayış, bu yüzden bu yanlış olabilir).


5

A) Tim'in cevabına katılıyorum.

B) Diğer işletim sistemleri, program ayarlarını saklamak için başka yöntemler kullanır; örneğin, Unix'ler genellikle dosyaları / etc (global dosyalar) içine ve kullanıcı klasörüne çeşitli gizli klasörlere (kullanıcı ayarları) yerleştirir. Bu nedenle, bazı durumlarda dağıtılması dışında, bir tür kayıt defteri kullanıyorlar.


3

Anladığım kadarıyla (mutlaka eğlenmek zorunda değilsin)

A) Herhangi bir programın kurulumu veya kurulumu hakkında bilgi depolayabileceği "merkezi bir konum" vermek. Bu bilgi daha sonra karar verdikleri gibi programlar tarafından kullanılabilir. Özelleştirme, korsanlıkla mücadele vb.

Bütün bu bilgiler bu yapı içerisinde yer alır, onu korur, birlikte akan hayvan fikrini düşünür, sayıları daha fazla emniyet altına alır. Her bir bilgi biti kendi ini dosyası olsaydı, bazı kullanıcılar bunu bir hevesle silebilirdi. Bunu hala kayıt defterine girerek yapabilirler ancak birçoğu onu kara bir kutu olarak görürler ve sistemlerini bozma korkusuyla dokunmazlar.

B) Mac OS, kayıt defteri gelmeden önce kullanılan ini windows pencereleri gibi ayrı dosyalar kullanır.


3

Kayıt Defterinin açık amacı, tüm yapılandırma ve ayar verileri için tek bir depo görevi görerek yapılandırma dosyalarına güvenmeyi ortadan kaldırmaktır.

Diğer işletim sistemlerinde, modus operandi , uygulamaya özgü bilgileri (yapılandırma dosyaları gibi) kullanıcıların giriş dizinindeki gizli uygulamaya özel dizinlere depolamak içindir. (Örneğin, oyun Aquaria yapılandırma bilgilerini içeride depolar $HOME/.Aquaria.) Genel ayarlar dosyaları içinde saklanır /etc/.

Mac'ler kendi işlerini yapar: uygulamaya özel plistdosyalar kullanıcının veya sistemin Librarydizininde (inanıyorum) saklanır .


3

Mesele, kayıt felsefesi ile değil, tasarımı ile ilgilidir. Kayıt defteri, işletim sistemi tarafından yüklenen programla ilgili önemli bilgileri aramak için kullanılır. Bilgileri gerektiğinde ve gerektiğinde yüklemek yerine, sistemin performansını etkileyebilecek "önyükleme" sırasında hepsini yükler. Ayrıca, satıcılar bir sürü bilgi yüklediğinde ve yazılım kaldırıldığında bilgiyi çoğu zaman kaldırmadıklarında, sistem tamamen kötüye kullanılmaktadır.

Unix'in aksine, her şey n dosyaları saklanır ve gerektiğinde yüklenir. Bu şekilde işletim sistemi performansı etkilemek için Satıcı programlama becerilerine dayanmaz ...


2

Diğer işletim sistemleri hakkında yorum yapamama rağmen, kayıt defteri ayrıca yükseltme veya kaldırma / yeniden yükleme işlemi sırasında bir uygulamanın yapılandırmasını korumaya yardımcı olur. Tüm yapılandırma özellikleri eklenmiş bir yükseltme nedeniyle değiştirilmesi gereken bir .ini dosyasındaysa, yapılandırma verilerini gelen ini dosyasında birleştirmek için zorluklarla karşılaşabilir veya özelleştirilmiş bir işlem oluşturmanız gerekebilir.

Ancak, kayıt defterindeki verilerde, uygulama ayarlarına dokunmadan dosyaların kaldırılmasını / yeniden yüklenmesini işleyen ortak bir yükleme paketi (WIX, InstallShield vb.) Kullanabilirsiniz.


1

(tümü A. B hakkında emin değil)

Bunun, kayıt defterinin uygulama ayarları için bir tür ortak arabirim işlevi gördüğü (tarihsel) noktaya bağlı olduğuna inanıyorum.

Bir uygulamanız var mı? Kullanıcı kapsamlı bir ayarı saklamak ister misiniz? Kayıt defterine yapıştırın.

"Kullanıcı profillerini sağlamaya" gerek yok, dosya sistemine doğrudan erişmeye gerek yok. Win32 tüm bunlara bakar.


1

Çoğu kullanıcı için yeni, yabancı ve tabu bir şeyler yaratmanın bir yoluydu, bu yüzden onu rahat bırakacaklardı. .ini ve autoexec.bat dosyaları daha da kötüsü için kolayca silinebilir veya değiştirilebilir.

Kayıt Ayarlarını Değiştirme, ah benim!


1

Uygulama ayarlarını basit bir şekilde kaydetmeye ek olarak , kayıt defteri, programların ve bileşenlerin diğer programları ve bileşenleri bulma yöntemleridir . Sonuçta, bunun binlerce metin veya xml dosyaya yayılmasının aksine tek bir veritabanında merkezileşmesinin nedeni olduğunu düşünüyorum.

Örneğin, video efektleri gerçekleştiren bir bileşen, kayıt defterine kendisini kaydeder, böylece videoyla ilgili diğer uygulamaların varlığını bilmesini ve kullanmasını sağlar. Bunun için merkezi bir sisteme sahip olmak, binlerce sistem ve uygulamanın bu entegrasyon seviyesine ulaşmak için farklı yöntemler kullanması nedeniyle, neyin ciddi olmasını engelleyeceğini önler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.