Selasa, November 04, 2008

Struktur Registri Pada Windows

Struktur registry agak mirip dengan struktur direktori dalam sistem berkas. Selain itu, registry juga dapat diakses dengan menggunakan sintaksis yang sama dengan cara mengakses berkas, dengan menggunakan karakter garis miring terbalik (backslash) untuk menandakan tingkatan hierarkis. Susunannya adalah seperti \\. Sebagai contoh, My Computer\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows, yang merujuk kepada sebuah subkey yang memiliki nama "Windows" yang terdapat di dalam subkey Microsoft, yang terdapat di dalam key dengan nama Software, yang terdapat di dalam subtree HKEY_LOCAL_MACHINE.

Setiap key dan subkey tersebut dapat memiliki nilai yang dapat ditentukan atau nilai default, yang disebut sebagai Value. Akan tetapi, cara mengakses value tidaklah sama dengan cara mengakses berkas dalam sistem berkas, mengingat nama value dapat mengandung karakter backslash yang dapat menjadi ambigu ketika menggunakan cara baca seperti halnya mengakses sistem berkas. Adalah fungsi-fungsi dalam Windows 32-bit Application Programming Interface/API (Win32 API) yang dapat melakukan query dan manipulasi terhadap value-value registry, yang dilakukan dengan cara mengambil nama value secara terpisah dari path key yang merupakan parent key. Setiap value memiliki jenis-jenis datanya masing-masing yang dapat dilihat pada bagian berikut.

Registry Windows terdiri atas beberapa anak pohon berikut, yang disusun secara hierarkis dengan My Computer sebagai root directory-nya:

  • HKEY_LOCAL_MACHINE, sering disebut sebagai HKLM, merupakan sebuah tempat penyimpanan untuk konfigurasi sistem yang bersangkutan, yang terdiri atas perangkat keras dan perangkat lunak. Semua yang terdapat di dalam anak pohon ini diaplikasikan kepada semua pengguna.
  • HKEY_CURRENT_USER, sering disebut sebagai HKCU, merupakan sebuah tempat penyimpanan untuk konfigurasi yang dimiliki oleh pengguna yang sedang melakukan logon, yang menyimpan informasi mengenai konfigurasi preferensi pengguna (konfigurasi desktop, warna, dan konfigurasi lainnya yang setiap pengguna dapat melakukan kustomisasi terhadapnya).
  • HKEY_USERS, sering disebut sebagai HKU, merupakan tempat penyimpanan untuk konfigurasi setiap pengguna yang terdaftar di dalam komputer yang bersangkutan. Setiap anak kunci dari anak pohon ini diidentifikasikan dengan menggunakan nomor Security Identifier (SID) yang dimiliki oleh pengguna. Ketika pengguna melakukan logon, SID yang cocok akan dimuat ke dalam anak pohon HKEY_CURRENT_USER.
  • HKEY_CLASSES_ROOT, sering disebut sebagai HKCR, merupakan tempat penyimpanan untuk konfigurasi asosiasi/pemetaan ekstensi sebuah berkas atau objek Object Linking and Embedding (OLE) dengan aplikasi yang dapat menanganinya. Sebagai contoh, berkas berekstensi .txt akan ditangani oleh aplikasi editor teks seperti Notepad dan masih banyak lainnya.
  • HKEY_CURRENT_CONFIG, sering disebut sebagai HKCC, merupakan tempat penyimpanan untuk konfigurasi perangkat keras dan sistem operasi yang sedang digunakan saat itu, yang diperoleh pada saat proses booting dilakukan. Informasi yang disimpan di sini bersifat volatil dan tidak disimpan secara permanen ke dalam berkas penampung registry, tapi akan selalu dibuat setiap kali proses booting dilakukan.
  • HKEY_DYN_DATA, yang hanya terdapat di dalam Windows 95, Windows 98, dan Windows Millennium Edition, merupakan tempat penyimpanan konfigurasi dinamis untuk semua perangkat keras plug-and-play. Tidak ada padanannya dalam Windows NT, tapi dalam Windows NT 5.x, terdapat sebuah anak pohon HKEY_PERFORMANCE_DATA, yang hanya digunakan untuk mengumpulkan informasi performance counter Windows 2000, mengingat semua konfigurasi perangkat keras disimpan di dalam HKEY_LOCAL_MACHINE\HARDWARE\.

Catatan: HKEY di dalam registry Windows, merupakan singkatan terhadap kata "Handle to Key".

HKEY_LOCAL_MACHINE

Menyimpan informasi/data mengenai semua konfigurasi mesin yang bersangkutan. HKLM bukanlah symbolic link ke kunci registry manapun. HKEY_LOCAL_MACHINE memiliki beberapa anak kunci, yakni:

  • HKEY_LOCAL_MACHINE\SOFTWARE, berguna untuk menyimpan semua konfigurasi perangkat lunak yang terinstal di dalam komputer yang bersangkutan, dan konfigurasinya yang akan diaplikasikan kepada semua pengguna, baik pengguna yang melakukan logon secara lokal/interaktif maupun yang melakukan logon secara remote (melalui service logon, batch logon, atau terminal services logon).
  • HKEY_LOCAL_MACHINE\SYSTEM, berguna untuk menyimpan semua informasi dan konfigurasi sistem operasi Windows yang sedang berjalan. Di sini terdapat semacam recovery point, yang disebut sebagai LastKnownGood Configuration, yang akan digunakan pada saat sistem mengalami masalah pada saat proses booting. Semua konfigurasi driver dan layanan Windows (Win32 Service dan komponen Windows seperti NTFS dan TCP/IP) disimpan di sini.
  • HKEY_LOCAL_MACHINE\SAM, berguna untuk menyimpan basis data akun pengguna yang terinstal di dalam sistem operasi yang bersangkutan. Secara default, SAM tidak dapat diakses, bahkan oleh administrator sekalipun, karena memang access control-nya tidak memungkinkan hal itu dilaksanakan. SAM adalah singkatan dari Security Accounts Manager.
  • HKEY_LOCAL_MACHINE\HARDWARE, berguna untuk menyimpan konfigurasi perangkat keras di dalam sistem yang bersangkutan, seperti halnya konfigurasi sumber daya perangkat keras (interupsi perangkat keras, konfigurasi DMA, dan konfigurasi lainnya).
  • HKEY_LOCAL_MACHINE\SECURITY, berguna untuk menyimpan konfigurasi keamanan Windows.

HKEY_CURRENT_USER

Menyimpan informasi/data yang diasosiasikan dengan pengguna yang sedang masuk log. HKCU merupakan sebuah symbolic link ke kunci registry HKEY_USERS\<SID dari pengguna yang bersangkutan>. HKCU juga menyimpan informasi mengenai profil pengguna, konfigurasi perangkat lunak, dan preferensi mereka. Terdapat beberapa anak kunci, yakni:

  • AppEvents, yang digunakan untuk menyimpan asosiasi antara suara dengan sebuah event. Disarankan untuk menggunakan Control Panel->Sound untuk mengubahnya, dan jangan menyunting secara langsung dari sini.
  • Console, yang digunakan untuk menyimpan konfigurasi jendela Command Prompt (cmd.exe); contoh: lebarnya, tingginya, dan warnanya. Disarankan untuk menggunakan Command Prompt->Properties untuk mengubahnya, dan jangan menyunting langsung dari sini.
  • Control Panel, digunakan untuk menyimpan konfigurasi screen saver, skema desktop, warna, keyboard, dan mouse. Selain itu juga dapat menyimpan informasi ketidakmampuan (accessibility) dan regional settings. Disarankan untuk menggunakan Control Panel->Display, Control Panel->Accessibility, dan Control Panel->Language and Regional Options untuk mengubahnya, dan jangan menyuntingnya secara langsung dari sini.
  • Environment, mengandung definisi Environment Variable. Disarankan untuk menggunakan Control Panel->System->Advanced->Environment Variables untuk mengubahnya, dan jangan menyunting langsung dari sini.
  • Keyboard Layout, menyimpan konfigurasi lay-out konfigurasi keyboard (contoh U.S. English, atau U.K. English, atau U.S. Dvorak, dan lain sebagainya).
  • Network, menyimpan konfigurasi dan pemetaan drive yang berada di jaringan.
  • Printers, menyimpan konfigurasi koneksi printer.
  • Software, digunakan untuk menyimpan preferensi pengguna terhadap sebuah perangkat lunak tertentu.
  • UNICODE
  • Windows 3.1 Migration Status

HKEY_USERS

Anak pohin HKEY_USERS mengandung beberapa anak yakni semua profil pengguna yang terdaftar di dalam sistem yang bersangkutan dan basis data registrasi objek OLE. Selain itu, anak pohon ini juga mengandung HKEY_USERS\.DEFAULT, yang dihubungkan dengan profil milik akun SYSTEM, yang merupakan profil yang digunakan oleh salah satu komponen Windows, WINLOGON.EXE, untuk menyimpan semua konfigurasi seperti halnya HKEY_CURRENT_USER, yakni bagaimana tampilan desktop, bagaimana konfigurasi perangkat keras dan lain-lain. Pengaturan yang diberlakukan terhadap HKU\.DEFAULT ini dapat menjadikan konfigurasi desktop dan lain-lain pada saat proses logon Windows akan berubah dari pengaturan default-nya.

Ketika seorang pengguna masuk log ke sebuah sistem untuk pertama kalinya, sementara akun miliknya tidak berupa roaming profile (yakni, sebuah profil pengguna yang disimpan di dalam tempat tersentralisasi di dalam domain controller), maka Windows akan membuatkan sebuah profil yang baru untuknya, yang dibuat berbasiskan pengaturan yang terdapat di dalam C:\Documents and Settings\Default User.

HKEY_CURRENT_CONFIG

Anak pohon HKEY_CURRENT_CONFIG mengandung data konfigurasi untuk profil perangkat keras (hardware profile) yang sedang digunakan oleh Windows. HKCC tidak mengandung data apapun, karena memang anak pohon ini merupakan sebuah symbolic link terhadap HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current. Dengan demikian, dengan mengubah kunci tersebut atau mengubah HKCC, akan menghasilkan sesuatu yang sama.

Penggunaan profil perangkat keras mengizinkan administrator untuk mengonfigurasikan beberapa variasi dari pengaturan driver perangkat keras yang digunakan pada saat melakukan booting. Meskipun profil yang digunakan dapat berubah dari satu proses booting ke proses booting lainnya, aplikasi dapat merujuk ke anak pohon ini untuk mencari profil mana yang sedang dimuat oleh Windows. Pengaturan profil perangkat keras dapat dilakukan dengan Control Panel->System->Hardware->Hardware Profiles. Jika ada lebih dari satu profil perangkat keras, maka komponen Windows, yakni NTLDR, akan menanyakan kepada pengguna mengenai profil yang harus dimuat pada saat proses booting dilakukan.

HKEY_CLASSES_ROOT

Anak pohon HKEY_CLASSES_ROOT mengandung dua jenis data, yakni:

  • Data yang mengasosiasikan jenis berkas (dilihat dari ekstensinya atau kelasnya) dengan program yang dapat membukannya. Subkunci jenis berkas di dalam HKEY_CLASSES_ROOT memiliki nama yang sama dengan ekstensi nama berkas, seperti halnya .txt, .exe, dan lain-lain. Asosiasi jenis berkas ini disimpan di dalam registry, tapi disarankan untuk menggunakan Folder Options->File Types jika memang hendak mengubahnya.
  • Data konfigurasi untuk objek-objek Object Linking and Embedding (OLE)/Component Object Model (COM).

Isi dari HKCR diambil dari dua sumber, yakni HKLM\SOFTWARE\Classes dan HKCU\SOFTWARE\Classes. Jika sebuah subkey atau entri terdapat di dalam salah satu dari dua lokasi tersebut, maka hal tersebut akan ditampilkan juga di dalam HKCR. Jika ada dua entri yang konflik di antara dua lokasi tersebut, hanya HKCU\SOFTWARE\Classes yang akan ditampilkan di dalam HKCR.

HKEY_DYN_DATA

[place holder]

Semua informasi di atas dapat dirangkum ke dalam tabel berikut

Anak pohon Keterangan
HKEY_CURRENT_USER Menyimpan informasi/data yang diasosiasikan dengan pengguna yang sedang masuk log.
HKEY_USERS Menyimpan informasi/data mengenai semua akun pengguna di dalam mesin yang sama
HKEY_CLASSES_ROOT Menyimpan informasi/data mengenai asosiasi berkas dengan aplikasinya dan registrasi objek Component Object Model (COM).
HKEY_LOCAL_MACHINE Menyimpan informasi/data mengenai semua konfigurasi mesin yang bersangkutan.
HKEY_PERFORMANCE DATA Menyimpan informasi mengenai kinerja sistem yang dikumpulkan oleh performance counter Windows NT.
HKEY_CURRENT_CONFIG Berisi beberapa informasi mengenai profil perangkat keras yang sedang digunakan.

Jenis data dalam registry

Sebuah value dapat memiliki jenis-jenis data seperti di bawah ini:

  • REG_NONE, yang merupakan sebuah jenis data registry yang tidak didefinisikan sebelumnya. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x00.
  • REG_SZ, merupakan jenis data teks (string) dengan panjang yang tetap (fixed-length string). Semua sistem operasi 32-bit Windows (Windows NT dan Windows 9x) mendukung jenis data registry ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x01.
  • REG_EXPAND_SZ, merupakan jenis data teks/string yang dapat diekspansi. Windows 9x tidak memiliki jenis data ini. Diperlukan editor registry khusus (regedt32.exe) untuk menangani jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x02.
  • REG_BINARY, merupakan jenis data biner, yang dapat berarti macam-macam (bisa berupa teks/string, atau bilangan). Semua sistem operasi 32-bit Windows (Windows NT dan Windows 9x) mendukung jenis data registry ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x03.
  • REG_DWORD, merupakan jenis data angka 32-bit. Semua sistem operasi 32-bit Windows (Windows NT dan Windows 9x) mendukung jenis data registry ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x04. Terdapat dua jenis implementasi dari jenis data ini, yakni:
    • REG_DWORD_LITTLE_ENDIAN, yang merupakan jenis data REG_DWORD default dalam Windows NT yang dijalankan di atas prosesor Intel x86/x64. Jenis data ini berukuran 32-bit yang disusun dengan menggunakan format little-endian. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x05.
    • REG_DWORD_BIG_ENDIAN, yang merupakan jenis data REG_DWORD yang berukuran 32-bit yang disusun dengan menggunakan format big-endian. Jenis data ini hanya dapat didukung oleh Windows NT yang dijalankan di atas mesin DEC Alpha, MIPS, atau IBM PowerPC, yang memang menggunakan format bilangan big-endian. Windows NT 5.x yang hanya dapat berjalan di atas sistem x86 tidak menangani jenis data ini (terdapat limitasi pada mikroprosesor), meskipun Windows NT 5.x mendukungnya. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x06.
  • REG_MULTI_SZ, merupakan jenis data teks/string yang memiliki banyak baris yang dipisahkan dengan dua buah karakter null (0x00). Windows 9x tidak memiliki jenis data ini.Diperlukan editor registry khusus (regedt32.exe) untuk menangani jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x07.
  • REG_LINK, yang merupakan symbolic link ke sebuah objek Windows NT dalam ruang nama/namespace objek Windows NT (yang diatur oleh Object Manager Windows NT). Registry Editor default bawaan Windows (regedit.exe, regedt32.exe, dan utilitas command-line reg.exe) tidak dapat menyunting jenis ini. Jenis data ini digunakan secara internal oleh Windows NT saja, dan tidak digunakan oleh aplikasi. Registry dalam Windows 9x tidak memiliki jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x08.
  • REG_RESOURCE_LIST (Windows NT) atau REG_FULL_RESOURCE_DESCRIPTOR, yang merupakan jenis data registry yang hanya digunakan untuk menyimpan konfigurasi perangkat keras dan driver-nya yang terinstalasi di atas sistem operasi Windows NT. Registry dalam Windows 9x tidak memiliki jenis data ini. Jenis data ini adalah kumpulan larik (array) yang digunakan untuk menyimpan daftar sumber daya (interupsi perangkat keras, Direct Memory Access (DMA), I/O range dan memory range) yang digunakan oleh komponen perangkat keras atau driver. Dibutuhkan registry editor khusus (regedt32.exe) untuk menyunting value dengan jenis data ini. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x09.
  • REG_QWORD, merupakan jenis data angka yang memiliki panjang 64-bit. Jenis data ini hanya terdapat di dalam sistem prosesor 64-bit saja, semacam DEC Alpha, IA-64, atau x64. Jenis data ini secara internal menggunakan tanda pengenal (identifier) 0x12. Sama seperti halnya REG_DWORD, REG_QWORD juga terdapat dua jenis implementasi, yakni little-endian (REG_QWORD_LITTLE_ENDIAN, dengan identifier 0x13) dan big-endian (REG_QWORD_BIG_ENDIAN, dengan identifier 0x14), meskipun secara default format yang digunakan adalah REG_QWORD_LITTLE_ENDIAN. Diperlukan editor khusus untuk menyunting jenis data ini.


Jenis data registry, dapat dirangkum pada tabel berikut:

Jenis data Identifier Keterangan
REG_NONE 0x00 Jenis data belum ditentukan
REG_SZ 0x01 Teks/string berukuran tetap
REG_EXPAND_SZ 0x02 Teks/string yang dapat berubah-ubah.
REG_BINARY 0x03 Jenis data biner (dapat berupa apa saja)
REG_DWORD 0x04 Jenis data bilangan dengan ukuran 32-bit
REG_DWORD_LITTLE_ENDIAN 0x05 Jenis data bilangan dengan ukuran 32-bit, dengan format little-endian. Dalam Windows NT 5.x, sama saja dengan REG_DWORD biasa.
REG_DWORD_BIG_ENDIAN 0x06 Jenis data bilangan dengan ukuran 32-bit, dengan format big-endian.
REG_MULTI_SZ 0x07 Jenis data teks/string dengan banyak baris yang dipisahkan dengan dua karakter null (0x00).
REG_LINK 0x08 Symbolic link dengan menggunakan format Unicode ke sebuah objek dalam Windows NT Object Manager.
REG_RESOURCE_LIST 0x09 Digunakan untuk menampung sumber daya perangkat keras.
REG_FULL_RESOURCE_DESCRIPTOR 0x10 Digunakan untuk menampung sumber daya perangkat keras.
REG_RESOURCE_REQUIREMENTS_LIST 0x11 Digunakan untuk menampung kebutuhan sumber daya perangkat keras.
REG_QWORD 0x12 Jenis data bilangan dengan ukuran 64-bit.
REG_QWORD_LITTLE_ENDIAN 0x13 Jenis data bilangan dengan ukuran 64-bit, dengan menggunakan format little-endian.
REG_QWORD_BIG_ENDIAN 0x14 Jenis data bilangan dengan ukuran 64-bit, dengan menggunakan format big-endian.

Tidak ada komentar: