krokos.net.pl
Masz wyłączoną obsługę javascript, niektóre funkcje na stronie mogą działać nieprawidłowo
22.10.2018
Haliszka, Loda, Przybysłw, Filip, Kordula, Halka, Kordian
dziś jest : 295 dzień roku wschód słońca o : 7:15 , zachód o : 17:42 koniec roku za : 70 dni
INFORMATYKA - Systemy Operacyjne - Rejestr Systemu Windows
Struktura Rejestru
Rejestr jest wykorzystywany przez Windows do przechowywania informacji o konfiguracji sprzentowej systemu, ustawieniach uzytkownikow. Przy uruchamianiu systemu Windows odczytuje potrzebne mu informacje i na ich podstawie konfiguruje swoja prace.
Rejestr jest przechowywany w kilku plikach. Znajduja sie one w katalogu : X:/windows/system32/config (X to litera partycji gdzie zainstalowalismy windowsa).
Gdy uruchomimy program do edycji rejestru np. regedit (start -> uruchom -> regedit) naszy oczom ukaze sie 6 glownych kluczy. Mozna je rozwijac klikajac na nie dwukrotnie lub klikajac na znaczek "+". Widok rejetru mozemy porownac do drzewiastego widoku folderow w eksploratorze Windows. Kazdy klucz (folder) moze zawierac inne podklucze (podforldery). Te z kolei moga zawierac wartosci zwane wpisami (pliki). Dopiero te wpisy przechowuja dane, ktore mozemy odczytac i uzywac.
Wspomniane 6 kluczy glownych to :
  • HKEY_CLASSES_ROOT- (HKCR) ten klucz przechowuje informacje na temat typow plikow, ikon powiazanych z tymi plikami, poleceniami tekstowymi dotyczacych danego obiektu, menu kontekstowym. W rzeczywistosci jest on jakby wskaznikiem do kluczy HKEY_LOCA_MACHINE\Software\Classes (ustawienia domyslne dla wszystkich uzytkownikow systemu) i HKEY_CURRENT_USER\SOftware\Classes (ustawienia dotyczace zalogowanego uzytkownika). HKCR laczy informacje odczytane z wspomnianych kluczy i wyswietla je. Chcac zmodyfikowac wartosci w HKCR zmiany nalezy wprowadzic w kluczach zrodlowych (z tych z ktorych HKCR czyta informacje).
  • HKEY_CURRENT_USER- (HKCU) przechowuje informacje dotyczace aktualnie zalogowanego uzytkownika systemu. Znajdziemy tu takie informacje jak zmienne systemowe, informacje o ustawieniach wygladu systemu, katalogow. Klucz ten jest wskaznikiem do klucz HKEY_USERS. Jest on tworzyony podczas ladowania sie systemu (w koncu przechowuje informacje o zalogowanym uzytkowniku). Mimo, ze jest on tylko wskaznikiem mozemy go edytowac - zmiany wprowadzone w HKCU pojawiaja sie w HKU i na odwrot.
  • HKEY_LOCAL_MACHINE- (HKLM) klucz ten zawiera wszystkie informacje dotyczace ustawien komputera, zainstalowanch programow, urzadzen, pamieci itp. Jest on niezalezny od zalogowanego uzytkowanika - dotycza wszystkich osob korzystajacych z komputera.
  • HKEY_USERS- (HKU) zawiera on informacje na temat profili wszystkich uzytkownikow. Sklada sie z co najmniej 3 podkluczy: pierwszy to .Default natomiast nazwa dwoch pozostalych jest zalezna od identyfikatora zabezpieczen (SID) zalogowanych uzytkownikow.
  • HKEY_CURRENT_CONFIG- (HKCC) przechowuje informacje dotyczace biezacego profilu sprzetowego. Jest on wskaznikiem do klucza HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \HardwareProfile. W profilu sa zawarte informacje rozniace sie od ustawien domyslnych zapisanych w kluczach SOFTWARE i SYSTEM.
  • HKEY_DYN_DATE- (HKDD) wystepuje on tylko w systemach Windows 9x i Me. Zmienia sie on dynamicznie. Przchowuje informacje o wydajnosci systemu itp. Po zamknieciu Systemu informacje sa usuwane.
Tak jak wczesniej zauważyłęm , ze rejestr jest przechowywany w kilku plikach. Tabele ponizej pokazuja jakie pliki, co przechowuja :
Windows NT/2000/XP/2003
KluczPliki
HKEY_LOCAL_MACHINE/SAMSam, Sam.log, Sam.sav
HKEY_LOCAL_MACHINE/SecuritySecurity, Security.log, Security.sav
HKEY_LOCAL_MACHINE/SoftwareSoftware, Software.log, Software.sav
HKEY_LOCAL_MACHINE/SystemSystem, System.alt, System.log, System.sav
HKEY_CURRENT_CONFIGSystem, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log
HKEY_USERS/DefaultDefault, Default.log, Default.sav
Windows 9x/Me
Rejestr w tych systemach jest przechowywany przez nastepujace pliki: User.dat, System.dat. Dodatkowo w Windows Me jest plik Classes.dat.
Odczyt wartosci kluczy rejestru
Przed odczytaniem interesujacych nas danych nalezy otworzyc odpowiedni klucz. Musimy posluzyc sie odpowiednia funkcja, ktora otworzy nam dany klucz i umiesci jego uchwyt w zmiennej HKEY. W tym celu mozemy uzyc dwoch funkcji RegOpenKeyEx oraz RegCreateKeyEx. Pierwsza z nich otwiera klucz natomiast druga tworzy go.
Prototyp funkcji RegOpenKeyEx wyglada nastepujaco:

LONG RegOpenKeyEx(HKEY hKey, LPCTSTR subkey, DWORD reserved, REGSAM samDesired, PHKEY result);

Jesli wszystko sie uda funckja zwraca nam ERROR_SUCCES, w przeciwnym razie otrzymujemy kod bledu.
Jako pierwszy argument podajemy uchwyt wczesniej otwartego klucz lub jedna z wartosci predefiniowanych:


-HKEY_CLASSES_ROOT
-HKEY_CURRENT_USER
-HKEY_HKEY_USERS
-HKEY_LOCAL_MACHINE
W argumencie "subkey" podajemy nazwe aktualnie otwieranego klucza. Jesli "hKey" zawieral uchwyt wczesniej otwartego klucza, to wartosci "subkey" mozemy nadac wartosc NULL.
Trzeci argument jest zarezerwowany i nadajemy mu wartosc NULL. W parametrze "samDesired" podajemy sposob dostepu do klucza. Moze on przyjac nastepujace wartosci: (przedstawiam tylko wybrane)

-KEY_ALL_ACCESS - dozwolone sa wszystkie operacje na kluczu
-KEY_ CREATE_SUB_KEY - mozliwosc utworzenia nowego podklucza
-KEY_READ - dozwolony odczyt wartosci klucza
-KEY_SET_VALUE - mozliwosc zmiany wartosci klucza
-KEY_WRITE - mozna zmieniac wartosc klucza i tworzyc nowe podklucze.

W ostatnim argumencie "result" zostanie umieszczony uchwyt otwartego klucza, pod wartunkiem ze operacja sie powiedzie.

Ponizej przedstawiam przyklad otwarcia klucza:

HKEY hKey;//zmienna na uchwyt klucza
LPCTSTR subkey="Software\\Przyklad\\Lukasz";//nazwa podklucza
if(!(RegOpenKeyEx(HKEY_LOCAL_MACHINE , subkey , NULL , KEY_ALL_ACCESS , hKey) == ERROR_SUCCESS)
{
MessageBox(0,"Nie udalo sie otworzyc klucza", "Blad", 0);
}


Druga funkcja z jakiej mozemy skorzystac chcac uzyskac uchwyt klucza jest RegCreateKeyEx. Jej prototyp wyglada nastepujaco:

LONG RegCreateKeyEx(
HKEY hKey,
LPCTSTR subkey,
DWORD Reserved,
LPTSTR Class,
DWORD Options,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES security,
PHKEY Result,
LPDWORD Disposition
);

Troche jest tych argumentow wiec je opisze. Funckja zwraca nam w przypadku powodzenia ERROR_SUCCESS lub kod bledu w przyeciwnym razie.
"hKey" to uchwyt wczesniej otwartego klucza lub jedna z wartosci predefiniowanych
HKEY_CLASSES_ROOT,HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS).
"subkey" to nazwa otwieranego klucza.
Argumentu "reserved" nie uzywamy.
"class" okresla klase tworzonego klucza - mozemy mu nadac wartosc NULL.
Parametr "options" okresla nam czy klucz ma zostac zapisany do rejestru ( wartosc REG_OPTION_NON_VOLATILE) czy tez ma byc przechowany tylko do konca sesji windows (wartosc REG_OPTION_VOLATILE).
Argument "samDesired" okresla tryb dostepu do klucza (wartosci takie same jak przy RegOpenKeyEx).
Wartosc security" to wskaznik do struktury SECURITY_ATTRIBUTES, okreslajacej poziom zabezpieczen klucza.
W zmiennej "result" zostanie umieszczony uchwyt utworzonego klucza.
W zmiennej "disposition" zostanie umieszczona jedna z dwoch warotsci:
REG_CREATED_NEW_KEY - utworzono nowy klucz
lub
REG_OPENED_EXISTING_KEY - otwarto istniejacy klucz.

Majac uchwyt danego klucza mozemy przystapic do odczytu wartosci.
Sluzy do tego funkcja RegQueryValueEx. Zwraca ona typ long (jesli sukces - ERROR_SUCCESS, w przeciwnym razie kod bledu). Prototyp funkcji wyglada nastepujaco:

LONG RegQueryValueEx(HKEY hKey, LPTSTR name, LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD datasize);

"hKey" to uchwyt wczesniej otwartego klucza lub jedna z wartosci predefiniowanych (takie jak wczesniej).
"name" to wskaznik na string zawierajacy nazwe wartosci do odczytania.
Argumentu "reserved" nie uzywamy.
W zmiennej "type" zostanie umieszczony typ odczytanej wartosci.
"data" jest adresem zmiennej, w ktorej zostana zapisane odczytane dane,
natomiast "datasize" jest rozmiarem odczytanych danych.
Jak zapewne zauwazyliscie funkcja ta zwraca nam trzy wartosci: odczytane dane, ich rozmiar oraz typ. Wykorzystuje do tego trzy zmienne. Jesli ktoras z informacji nie jest nam potrzebna mozemy podac NULL. Powiedzialem, ze w zmiennej "type" zostanie umieszczony typ odczytanej wartosci.
Tabelka ponizej przedstawia te typy wraz z krotkim opisem:
Typ danychOpis
REG_BINARYDane binarne. W tym formacie przewaznie sa zapisywane dane o urzadzeniach.
REG_DWORDLiczba 32-bitowa. Przy jej uzyciu zapisywane sa glownie parametry konfiguracji urzadzen i uslug.
REG_EXPAND_SZlancuch o zmiennej dlugosci. Dane sa definiowane kiedy program lub usluga odwoluja sie do danej wartosci.
REG_MULTI_SZWartosc przechowuje wiele danych lub zestawien.
REG_SZlancuch tekstowy o stalej dlugosci
REG_RESOURCE_LISTZestaw zagniezdzonych tablic. Sluzy do przechowywania zasobow uzywanych przez sterowniki.
REG_LINKlancuch definiujacy lacze
REG_NONEDane bez zdefiniowanego typu
REG_DWORD_LITTLE_ENDIANPodobny do REG_DWORD. Najbardziej znaczacy bajt slowa jest wyzsza "polowka"(?) tego slowa.
REG_DWORD_BIG_ENDIANNajbardziej znaczacy bajt slowa jest jego dolna "polowka"(?)
Modyfikowanie wartosci kluczy.
W celu ustawienia nowej wartosci klucza nalezy posluzyc sie funkcja RegSetValueEx.

LONG RegSetValueEx(
HKEY hKey,
LPCTSTR name,
DWORD reserved,
DWORD type,
const byte* data,
DWORD datasize);
Funkcja zwraca ERROR_SUCCES lub kod bledu. Wartosc "hKey" to uchwyt otwartego klucza lub jedna z wartosci predefiniowanych(tak jak wczesniej). "name" to wskaznik na string zawierajacy nazwe wartosci do zmiany. "reserved" jest zarezerwowany i go nie uzywamy. "type" to rodzaj zapisywanych danych (patrz tabelka wyzej). "data" to wskaznik zawierajacy dane do zapisania, natomiast "datasize" to rozmiar tych danych. Ponizej przedstawiam kod zapisu danych:

LPCTSTR name="Software\\Przyklad\\Lukasz";
DWORD data=1000;
if(RegSetValueEx(key,"Wartosc REG_DWORD",0,REG_DWORD,(LPBYTE)& data,sizeof(data))==ERROR_SUCCESS)
{
MessageBox(0,"Pomyslnie ustawiono wartosc w kluczu rejestru","Uwaga",MB_OK);
}
RegCloseKey(key);
}
W celu usuniecia wartosci danego klucza nalezy wywolac funkcje RegDeleteValue. Jako pierwszy parametr podajemy uchwyt otwartego klucza lub jedna z wartosci predefiniowanych. Jako drugi argument przekazujemy wskaznik na string zawierajacy nazwe wartosci do usuniecia. Edytowany klucz mosi byc otwarty w trybie REG_SET_VALUE. Majac uchwyt otwartego klucza mozemy zechciec aby zostal on natychmiast zapisany do rejetru. Poslugujemy sie wtedy funkcja RegFlushKey. Jako jedyny argument przyjmuje ona uchwyt aktualnie otwartego klucza.
Inne operacje na rejestrze
Otwierajac klucz uzyskujemy jego uchwyt. Mozemy go wykorzystac do operacji na tym kluczu, jednak zawsze mosimy pamietac, ze gdy klucz i jego uchwyt przestanie nam byc potrzebny nalezy zamknac klucz. Robimy to funkcja RegCloseKey. Przyjmuje ona tylko jeden argument - uchwyt otwartego klucza.

LONG RegCloseKey(HKEY hKey);
Do usuniecia klucza z rejestru mozemy skorzystac z funkcji RegDeleteKey. Przyjmuje ona dwa argumenty: pierwszy to uchwyt do otwartego klucza (lub jedna z wartosci predefiniowanych), a drugi to nazwa usuwanego podklucza. Jezeli drugi argument ma wartosc NULL, to zostanie usuniety klucz wskazany przez pierwszy argument.

LONG RegDeleteKey(HKEY hKey, LPCTSTR subkey);
Pliki *.reg
Wspomniane wczesniej funkcje nie wyczerpuja w pelni mozliwosci edycji rejestru. Nalezy wspomniec o plikach *.reg. Sa to pliki w ktorych sa zapisane klucze rejestru. Po otwarciu takiego pliku zmiany zostaja wprowadzone do rejestru. Pliki rejestru tworzymy w dowolnym edytorze tekstu nadajac im rozszerzenie "reg". Podczas tworzenia takiego pliku mosimy pamietac o scisle okreslonej budowie. Ponizej jest pseudokod takiego pliku:

NAGLOWEK
pusta_linia
[KLUCZ_1]
"wartosc_1"="typ_danych:dane1"
"wartosc_2"="typ_danych:dane2"
pusta_linia
[KLUCZ_2] "wartosc_3"="typ_danych:dane3"

W linii pierwszej (NAGLOWEK) podajemy wersje edytora rejestru. Moze ona przyjac nastepujace wartosci: "Windows Registry Editor Version 5.00" (dla systemu Windows 2000/XP/2003) lub "REGEDIT4" (system Windows 98 i NT). Pliki z naglowkiem REGEDIT4 dzialaja takze w nowszych systemach. Nastepnie nastepuje "pusta linia". W tej linii nie moze znalezc sie zaden znak - oddziela ona naglowek od definicji kluczy. W nastepnej linii definiujemy klucz, ktory chcemy modyfikowac. Nazwa klucza mosi byc ujeta w nawiasy klamrowe. Chcac usunac klucz przed jego nazwa dajemy znak "-"(minus), np.

[-HKEY_LOCAL_MACHINE\SOFTWARE\ TheGhost\przyklad].

Parametr "wartosc_X" to wartosc jaka pojawi sie w rejestrze. Jesli taki wpis nie istnieje zostanie utworzony, jesli natomiast istnieje jego zawartosc zostanie zamieniona. Chcac usunac wartosc z rejestru po znaku rownosci dajemy znak "-" (minus), np.: "wartosc_1"=- Typ danych okresla nam typ danych jakie zapisujemy do rejestru. Jesli ten typ to REG_SZ parametr ten mozemy pominac. "daneX" to dane jakie zostana zapisane w rejestrze w "wartoscX". Musza one byc wprowadzone w odpowiednim formacie. Ponizej przedstawiam kod dodajacy wpis do rejestru:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TheGhost]
"wartosc"="dane"
Ciekawe klucze
W tej części przedstawionych jest kilka kluczy o bardzo ciekawym dzialaniu.
KLUCZ : HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ CurrentVersion \ Policies \ Network :
  • HideSharePwds - ukrywanie hasel udostepniania poprzez zastapienie ich na ekranie gwiazdkami
  • DisablePwdCaching - wylaczenie buforowania hasel
  • AlphanumPwds - wymaganie korzystania z hasla alfanumerycznego
  • MinPwdLen - minimalna dlugosc hasla
  • NoDialIn - brak mozliwosci odbierania telefonu
  • NoPrintSharing - brak mozliwosci udostepniania drukarek innym uzytkownikom
  • NoFileSharing - brak mozliwosci udostepniania plikow innym uzytkownikom
KLUCZ : HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System :
  • NoDispCPL - wylaczenie dostepu do wlasciwosci ekranu
  • NoDispBackgroundPage - wylaczenie dostepu do zakladki wlasciwosci ekranu Tlo
  • NoDispScrSavPage - wylaczenie dostepu do zakladki wlasciwosci ekranu Wygaszacz ekranu
  • NoDispApperancePage - wylaczenie dostepu do zakladki wlasciwosci ekranu Wyglad
  • NoDispSettingsPage - wylaczenie dostepu do zakladki wlasciwosci ekranu Ustawienia
  • NoSecCPL - wylaczenie dostepu do arkusza wlasciwosci Hasla
  • NoPwdPage - wylaczenie dostepu do zakladki Zmien haslo arkusza Hasla
  • NoAdminPage - wylaczenie dostepu do zakladki Zdalne administrowanie arkusza Hasla
  • NoProfilePage - wylaczenie dostepu do zakladki Profile Uzytkownika arkusza Hasla
  • NoDevMgrPage - wylaczenie dostepu do zakladki Menedzer Urzadzen arkusza System
  • NoConfigPage - wylaczenie dostepu do zakladki Profile Sprzetu arkusza System
  • NoFileSysPage - wylaczenie dostepu do arkusza wlasciwosci System Plikow
  • NoVirtMemPage - wylaczenie dostepu do arkusza wlasciwosci Pamiec Wirtualna
  • DisableRegistryTools - wylaczenie dostepu do Edytora Rejestru
KLUCZ : HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Network :
  • NoNetSetup - wylaczenie dostepu do wlasciwosci sieci
  • NoNetSetupIDPage - wylaczenie dostepu do zakladki wlasciwosci sieci Identyfikacja
  • NoNetSetupSecurityPage - wylaczenie dostepu do zakladki wlasciwosci sieci Kontrola Dostepu
  • NoFileSharingControl - brak kontroli nad wspoluzytkowaniem plikow
  • NoPrintSharingControl - brak kontroli nad wspoluzytkowaniem drukarek
  • NoEntireNetwork - brak folderu Cala Siec
  • NoWorkgroupContents - brak skladnikow grup roboczych w Otoczeniu Sieciowym
KLUCZ : HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer :
  • NoPrinterTabs - ukrycie zakladek Ogolne i Szczegoly arkusza wlasciwosci drukarek
  • NoDeletePrinter - brak mozliwosci usuwania drukarek
  • NoAddPrinter - brak mozliwosci dodawania drukarek
  • NoStartMenuSubFolders - ukrywa podfoldery menu Start
  • NoRun - brak polecenia Uruchom...
  • NoSetFolders - brak polecenia Ustawienia w menu Start
  • NoSetTaskbar - brak wlasciwosci paska zadan
  • NoFind - brak polecenia Znajdz
  • NoDrives - brak dostepu do dyskow logicznych (tyle jedynek, ile kolejnych dyskow ma byc ukrytych)
  • NoNetHood - brak dostepu do Otoczenia Sieciowego
  • NoDesktop - brak pulpitu
  • NoClose - brak mozliwosci zamkniecia Windows
  • NoSaveSettings - wylaczone zachowywanie ustawien przy wyjsciu z Windows
  • RestorictRun (Klucz) - lista dozwolonych aplikacji
Chcac okreslic opoznienie z jakim jest wyswietlane podmenu w menu start, wejdz do klucza:
HKEY_CURRENT_USER\ControlPanel\ desktop\MenuShowDelay i wprowadz nowa wartosc.
HKEY_CLASSES_ROOT\lnkfile, usun klucz IsShortcut a wszystkie strzalki przy skrotach znikna.
HKEY_USERS\Default\ControlPanel \AutoEndTask - zmien wartosc na 1 a wymusisz automatyczne zakonczenie nieodpowiadajacego procesu.
online : 1 użytkownik, dziś odwiedziło : 22 osoby
Zgodnie z nowelizacją ustawy o Prawie Telekomunikacyjnym informujemy, że strona krokos.net.pl w swoim działaniu korzysta z zapisywanych informacji w postaci ciasteczek (ang. cookies).
Pomagam - Fundacja TVN
powered by scms © 2004 - 2018 design by sid