Portál AbcLinuxu, 30. dubna 2025 22:43

Registry v Linuxu?

4.7.2005 16:56 | Přečteno: 1269× | ABC live | poslední úprava: 11.7.2005 13:00

Registry Windows, binární bordel, který proklíná většina počítačově znalých lidí (ostatním je to totiž jedno). Ale dají se nějak využít v Linuxu?

Odstrašující příklad

Dají a to dokonce hned dvěma způsoby. Tím prvním je odstrašující příklad, ale zdá se, že jistým lidem to pořád připadá jako dobrý nápad (gconf, anebo elektra). Zde, na abc, před časem proběhla na toto téma bouřlivá debata. Ale o výhodách, či nevýhodách registrů zde hovořit nechci.

Konfigurace Linuxu

Druhým způsobem je využití informací z registrů pro konfiguraci Linuxu. Protože, pokud máme distribuci, jež je přímo zaměřená na lidi z Windows, tak proč jim neulehčit počáteční konfiguraci a nevzít jednoduše některá nastavení z Windows? Ještě, než se začnete chytat za hlavu, tak cílová skupina pro tento software jsou live distribuce a ne ty klasické, protože u těch by to jen zbytečně zdržovalo start. Konkrétně je tohle připravovaná feature pro live distro abclinuxu, viz Leošovo oznámení.

Textová podoba

Jenže je tu problém, jak v Linuxu přečíst obsah registrů? Naštěstí existuje program v Pascalu dumphive, který dokáže převést onen binární bordel do čitelnější textové podobny, která se snadno zpracovává. Není nic jednoduššího, než při startu udělat konverzi a soubor zpracovat. Samotné dumpnutí trvá asi 4 až 5 vteřin (D700 a 5400rpm disk) a další zpracování je už poměrně rychlé.

Dalším problémem je čtení z registrů, pokud máte to štěstí a neznáte je, tak přikládám ukázku:

[SYSTEM\ControlSet001\{36FC9E60-C465-11CF-8056-444553540000}]
"CoInstallers32"=hex(7):68,63,63,6f,69,6e,2e,64,6c,6c,2c,48,43,43,4f,49,4e,5f,\
  45,6e,74,72,79,00,00
"EnumPropPages32"="usbui.dll,USBControllerPropPageProvider"
"DriverFlags"=dword:00000001

Magická čísla a hexa řetězce

Dumpnutím proto získáme jenom hromadu (u mě 3.5MB) naprosto nekomentovaných dat, jejíž struktura je mě a většině ostatních lidí na planetě utajená. A pokud se podíváte na ukázku, tak tam uvidíte dvě chuťovky, které na nás Billovi programátoři nachystali. Tou první jsou magická čísla UUID, která jsou ve složených závorkách. Správný registr jimi musí samozřejmě jenom přetékat.

Druhou jsou jakási záhadná čísla, která jsou uvozena prefixem hex(7):, nebo jen hex:. Naštěstí se mi podařilo zjistit, že se jedná o ASCII znaky v hexa kódu. Takže, pokud rozšifrujeme náš příklad, uvidíme: hccoin.dll,HCCOIN_Entry. Naštěstí není rozšifrování nic složitého. V Pythonu stačí napsat print chr(int('50',16) a výsledkem je "p".

WinReg.py

Protože ani čtení z textové formy není triviální, napsal jsem si v Pythonu modul WinReg.py, jehož třída Reader zabezpečuje čtení. Vlastně obsahuje pouze jednu veřejnou metodu a to getKeys(), jejíž parametr je název větve. Ta vrátí slovník, název_klíče:hodnota příslušné větve. Třída je velmi jednoduchoučká. Provádí pouze sekvenční čtení souboru, protože nepředpokládám, že se z registru bude číst příliš věcí.

Nastavení sítě/připojení k internetu

Jako první (a v podstatě jediné) využití mě napadlo vytáhnout z registrů připojení k síti. Jelikož můj provider nepoužívá DHCP (všechno je natvrdo zapsané), musím si nastavení pokaždé udělat sám, což zdržuje. Ale dá se předpokládat, že spusta lidí u svým malých sítí, která sdílejí připojení k internetu, také nebudou DHCP používat.

Metodu pokus-omyl, se mi podařilo zjistit, že můsím zjistit magické číslo a pak vím, v jaké větvi jsou parametry nastavené:
SYSTEM\ControlSet001\Services\Tcpip\Linkage\Route- obsahuje UUID defaultního rozhraní a ...
SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interface\{UUID} obsahuje parametry připojení NameServer - adresa DNS
IPAddress - IP adresa
...
Pokud tohle všechno znám, není problém si vygenerovat patřičný konfigurační soubor, pro init skript. Je velmi příjemné, pokud si člověk nabootuje liveCD a ihned mu funguje připojení k síti/internetu.

Bohužel, jak jsem již říkal nazačátku, Windows registry jsou hromada nedokumentovaného a nekomentovaného bordelu. A navíc jim nikdo nerozumí. Pokládal jsem dotazy na několika serverech, ale odpovědi jsem se nedočkal :-). Takže jsem si aspoň udělal obrázek o znalostech uživatele Windows. Jenže zatím nastavení funguje jen na mém počítači a pro můj způsob připojení, což není příliš dobré.

       

Hodnocení: -

zatím nehodnoceno
        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

4.7.2005 17:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše překlad
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč tolik lidí překládá anglický termín registry do češtiny jako (ty) registry? Vždyť je to přeci ještě větší nesmysl než ten Windows
4.7.2005 17:38 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: překlad
Já myslím, že to takový nesmysl není, protože databáze je sice jedna, ale je uložena v několika souborech a merguje se až při bootu a přihlašování. Viz wikipedia. Mimo to jsem zkoumal především anglické weby, proto jsem raději ponechal anglické pojmenování.
When your hammer is C++, everything begins to look like a thumb.
4.7.2005 17:46 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: překlad
Pokud ponecháme anglické pojmenování, pak by to ale musela být ta registry. O rodu se můžeme zkusit dohadovat, ale rozhodně trvám na jednotném čísle. I když ta databáze je v několika souborech, těm souborům se neříká register a v originále se registrační databázi neříká registers… Nebo je snad soubor /etc/protocols (nebo /etc/services) lokální kopií registrů IANA?
5.8.2005 04:01 zenek | skóre: 8 | blog: Hello_world
Rozbalit Rozbalit vše Re: překlad
Taky jsem si myslel, že jsou to _ta_ Windows (množné číslo), ale poté, co jsem se dozvěděl, že v angličtině je to jednotné číslo (Windows is, Windows does, dokonce jsem se ptal jedné američanky, která potvrdila, že je to singular) už mi "ten Windows" tak nesmyslný nepříjde.

ach jo, stejně si to nikdo nepřečte... Proč já jen čtu ty staré blogy...
Stop Skype Plague. , moje Jabber ID: zenek.k@jabbim.cz. Nejlepší XMPP server. DRM.
4.7.2005 17:42 petr_p
Rozbalit Rozbalit vše regedit
Odpovědět | Sbalit | Link | Blokovat | Admin
Skvela prace. Mozna by vam pomohl regedit z Wine. A na tajemstvi nekterych polozek registru se muzete zeptat v newsgrupach microsoft.public.cs.*.
Pavel Stárek avatar 4.7.2005 19:54 Pavel Stárek | skóre: 44 | blog: Tady bloguju já :-) | Kolín
Rozbalit Rozbalit vše Re: regedit
A na tajemstvi nekterych polozek registru se muzete zeptat v newsgrupach microsoft.public.cs.*.
Mám pocit že některá "tajemství" skytá v registru Windows neznají ani vývojáři Microsoftu :-D
Kdo chce, hledá způsob; kdo nechce, hledá důvod.
4.7.2005 17:51 Libor Tvrdík | skóre: 2 | blog: Linuxová kapsička
Rozbalit Rozbalit vše Technická dokumentace
Odpovědět | Sbalit | Link | Blokovat | Admin
Nenapadlo by mě, že tuhle větu použiji ve spojitosti s Windows(TM). Nu což: "RTFM: technet.microsoft.com!" Uznávám, že registry nejsou žádný med, ale orientovat se v nich dá. Dobrým zdrojem je též www.installshield.com.
4.7.2005 17:55 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Technická dokumentace
OK, díky, to si přečtu. Já moc úspěšný při hledání nebyl :-(. Je zajímavé, že relevantní odpovědi dostanu až na Linuxovém serveru.
When your hammer is C++, everything begins to look like a thumb.
4.7.2005 18:03 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše snad na to existuje nějaká knihovna
Odpovědět | Sbalit | Link | Blokovat | Admin
Mám pocit, že jsem kdysi někde zahlédl knihovnu, která umožňovala číst data z registry. Ale moc mne to tenkrát nezaujalo, takže jménem neposloužím…
4.7.2005 18:28 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: snad na to existuje nějaká knihovna
To není třeba, já jsem si na to udělal modul v pythonu, kdtrý to dokáže vyčítat z textové formy. Nemám problém se čtením, ale nevím, co kde je. Libor Tvrdík o příspěvek výše mě naštěstí odkázal na nějaké weby.
When your hammer is C++, everything begins to look like a thumb.
Luboš Doležel (Doli) avatar 4.7.2005 18:35 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše .
Odpovědět | Sbalit | Link | Blokovat | Admin
Místo ControlSet001 dej radši CurrentControlSet.

Další zajímavé využití (zpříjemnění) by bylo načtení oddílů a jejich písmen a jejich následný mount do /mnt/win_X.
4.7.2005 19:21 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: .
OK, díky moc! S tím /mnt/win_X to není špatný nápad, ale nevím, jestli dokážu převádět multi(0)disk(0)rdisk(0)partition(1) na /dev/hdxx, protože zrovna tohle je disk /dev/hdb1, čekal bych, že tam bude disk(1), nebo rdisk(1).
When your hammer is C++, everything begins to look like a thumb.
Luboš Doležel (Doli) avatar 4.7.2005 19:41 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: .
rdisk = 0 má asi speciální význam. Viz zde. Bude to možná něco jako "disk ze kterého bootuji".
4.7.2005 21:59 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: .
No teď mě došlo, že nemůžu číst registry, dokud nemám připojený systémový disk, takže je to trochu problém vejce a slepice. Pokud nechi za běhu remontovat disky. Ale určitě se nad tím zamyslím!
When your hammer is C++, everything begins to look like a thumb.
bazil avatar 4.7.2005 19:49 bazil | skóre: 33 | blog: sluje | Miroslav
Rozbalit Rozbalit vše odkaz
Odpovědět | Sbalit | Link | Blokovat | Admin
asi byjse se měl kuknout sem: http://www.winguide.com/
elviin avatar 4.7.2005 19:51 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Linuxová náhrada
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak mne napadlo, pokud by z registru šla vytáhnout informace taková, aby práce v Linuxu byla minimálně tak kvalitní jako ve Windows, tak by to možná začínající uživatel ocenil. Např. při instalaci Linuxu by instalační procedura navrhla ekvivalentní programy k programům, které uživatel používal ve Windows.
4.7.2005 19:59 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Linuxová náhrada
...aby práce v Linuxu byla minimálně tak kvalitní jako ve Windows...

Snad bys nechtěl kazit Linux?!

Např. při instalaci Linuxu by instalační procedura navrhla ekvivalentní programy k programům, které uživatel používal ve Windows.

Doufám, že se nikdy nedočkám takovéhle zvrhlosti v instalátoru.
-- Nezdar není hanbou, hanbou je strach z pokusu.
Luboš Doležel (Doli) avatar 4.7.2005 20:03 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Linuxová náhrada
Teď je práce v Linuxu nekvalitní (rozuměj ne tak kvalitní, jako ve Windows?). Odvážné tvrzení.
elviin avatar 4.7.2005 20:29 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
Rozbalit Rozbalit vše Re: Linuxová náhrada
Chtěl jsem to napsat jinak:(. Aby práce - produkt uživatele na OS Linux byl minimálně stejně kvalitní. Rozuměj výstup. Nijak jsem nechtěl pochybovat (komentovat) o kvalitě Linuxu. Psal (chtěl jsem napsat) o kvalitě výstupu , ne kvalitě samotný činnosti. A to se shodneme, že pokud uživatel nedokáže používat nástroj XY ať je sebedokonalejší, pak je ten nástroj k ničemu.
Luboš Doležel (Doli) avatar 4.7.2005 20:33 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Linuxová náhrada
Jo tak.

Pro začátek by např. stačilo, aby instalátory Linuxu při výběru aplikací ukazovaly i screenshoty. Když je u většiny textových editorů napsáno "Excellent text editor", tak to uživateli moc neřekne. Screenshot by mu možná řekl víc.
4.7.2005 20:46 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Linuxová náhrada
Nj, screenshot excellent text editoru vim by jim toho řekl moc :-).

Já opět podotýkám, že se bude jednat o live distribuci!
When your hammer is C++, everything begins to look like a thumb.
4.7.2005 20:43 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Linuxová náhrada
Jenom bych chtěl podotknout, že se jedná o Live distribuci, takže instalační procedura znamená pouhé překopírování na harddisk a nastavení zavaděče.

Ekvivalentní programy, to je těžko řešitelné. Např. když je v systému více uživatelů, jak mám poznat, koho brát? A hlavně Leoš chce, aby tam byl od každého programu jen jeden zástupce, takže na tohle by byl lepší nějaký průvodce. Internet Explorer -> Konqueror, Winamp -> amarok, ... .

Mimo to, každé nové dumpnutí registrů prostě zabere svůj čas a já bych nerad zpomaloval boot. Pokud pojede síť, není problém jej odkázat na nějakou stránku na abclinuxu.
When your hammer is C++, everything begins to look like a thumb.
Luboš Doležel (Doli) avatar 4.7.2005 20:51 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Linuxová náhrada
Bylo by dobré tam dát i aplikace multiplatformní. I když je tam Konqueror, tak by Opera uživatele Opery z Windows hodně potěšila (berte jako příklad).

BTW Konqueror mi jako uživateli absolutně nevyhovuje. Je zabugovaný a nechodí v něm 4. a 5. tlačítko myši - moc bych jej jako "vlajkovou loď" WWW browserů na Linuxu neukazoval.

Ale tohle asi patří do jiné diskuze...
4.7.2005 20:56 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Linuxová náhrada
Já neznám konkrétní podmínky, za kterých se může Opera šířit. Ostatně výběr softwaru bude určitě provázet velký boj, ale myslím, že bude lepší mít minimum prověřených aplikací.
When your hammer is C++, everything begins to look like a thumb.
4.7.2005 21:33 Harvie
Rozbalit Rozbalit vše Jasně
Odpovědět | Sbalit | Link | Blokovat | Admin
Určitě jste si všimly že spuštění stejného programu (dle složitosti) trvá ve widlých zlomek času, co ti na panelu v linuxu "svítí" spouštím program a točí se ti kurzor.

I z největšího bordelu se dá nějak těžit!
4.7.2005 21:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jasně
Au! To bolí! Co vám ten jazyk udělal?
4.7.2005 22:07 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: Jasně
No to je způsobeno tím, že ve Windows se standardně nahrávají všechny systémové knihovny do paměti. V Linuxu se tohle jmenuje prelink.
When your hammer is C++, everything begins to look like a thumb.
Luboš Doležel (Doli) avatar 5.7.2005 15:11 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Jasně
Prelink použivám a i tak je start programů s GUI mnohem pomalejší, než pod Windows :-(

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.