Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Akses Registry Windows dengan PHP

PHP Master | Akses Registry Windows dengan PHP

Jennifer Aniston
Jennifer Anistonasal
2025-02-25 10:09:10475semak imbas

PHP Master | Akses Registry Windows dengan PHP

Kunci Takeaways

  • Registry Windows, maklumat konfigurasi penyimpanan pangkalan data hierarki yang berstruktur, boleh diakses dengan PHP menggunakan lanjutan Win32STD, yang boleh dimuat turun sebagai perpustakaan pra-kompilasi dari muat turun.php.net/pierre/.
  • Pendaftaran Windows dibahagikan kepada lima kumpulan utama yang dikenali sebagai kunci: hkey_current_config, hkey_local_machine, hkey_users, hkey_classes_root, dan hkey_current_user. Setiap kunci mengandungi subkey yang mengandungi subkey, nilai konfigurasi, atau kedua -duanya.
  • Fungsi reg_open_key () membuka sambungan ke pendaftaran dan mengembalikan sumber, yang boleh digunakan dengan fungsi pendaftaran lain untuk bertindak pada sambungan itu. Fungsi reg_close_key () menutup sambungan. Fungsi reg_set_value () digunakan untuk menulis nilai kepada pendaftaran, menimpa nilai sedia ada atau membuat yang baru.
  • Pendaftaran Windows boleh digunakan untuk aplikasi praktikal seperti menyimpan maklumat konfigurasi untuk aplikasi berasaskan web, menyimpan data aplikasi dan keutamaan pengguna untuk aplikasi desktop, atau mengesahkan kehadiran peranti perkakasan seperti dongle USB. Walau bagaimanapun, mengubah suai pendaftaran perlu dilakukan dengan berhati -hati kerana ia boleh menjejaskan operasi sistem.
Pernahkah anda bangun pada waktu pagi dan berfikir pada diri sendiri, "Saya mahu melakukan sesuatu yang gila hari ini?" Nah, jika hari ini adalah salah satu daripada pagi -pagi maka anda beruntung. Saya ingin memberi anda sedikit pengenalan untuk mengakses Windows Registry menggunakan PHP. PHP ... pendaftaran ... gila! Registry Windows hanyalah pangkalan data berstruktur hierarki di mana sistem operasi Windows dan aplikasi lain menyimpan maklumat konfigurasi penting. Segala jenis data disimpan dalam pendaftaran: Profil Pengguna, persatuan jenis fail, maklumat perkakasan, nombor siri, dan banyak lagi. Dengan fungsi yang tersedia dari sambungan Win32STD, aplikasi PHP berasaskan Windows anda juga boleh mengakses pendaftaran. Pelanjutan Win32STD boleh dimuat turun sebagai perpustakaan pra-kompilasi dari muat turun.php.net/pierre/. Cukup lepaskan ke dalam folder ext php anda, kemas kini fail php.ini anda, dan mulakan semula Apache jika perlu. Perhatikan bahawa sekarang DLL yang anda muat turun adalah 32-bit, jadi jika anda menggunakan binaan 64-bit Wampserver atau sebagainya maka anda tidak akan berjaya. Anda perlu menurun Wampserver ke membina 32-bit atau cuba menyusun perpustakaan sendiri.

susun atur pendaftaran

Pendaftaran mempunyai reputasi sebagai tempat yang gelap, berbahaya dan menakutkan dalam sistem operasi Windows. Ini mungkin ketakutan yang dibesar -besarkan, tetapi masih saya akan mengulangi mantra pendaftaran Microsoft: "Sebelum anda mengubah suai pendaftaran, menyokongnya dan pastikan anda memahami cara memulihkannya jika masalah berlaku. Perubahan yang tidak betul boleh menyebabkan masalah serius yang mungkin memerlukan anda memasang semula sistem operasi anda. " Jadi apa yang kelihatan seperti ini kelihatan seperti gelap dan menakutkan? Pendaftaran Windows dibahagikan kepada 5 kumpulan utama yang dikenali sebagai kunci: hkey_current_config
Maklumat utama ini menyimpan maklumat mengenai perkakasan komputer seperti resolusi monitor dan tetapan pembesar suara. Anda mungkin melihat kunci ini disingkat sebagai HKCC. hkey_local_machine
Kunci ini mengandungi maklumat konfigurasi untuk mesin seperti pencetak, perisian dan maklumat rangkaian. Kunci dimuatkan terlebih dahulu dan kemudian penyertaan dari profil pengguna mengatasi pelbagai nilai. Anda akan melihat kunci ini disingkat sebagai HKLM. hkey_users
Kunci ini memegang semua profil untuk akaun pengguna tempatan pada mesin. Perkara -perkara seperti pemilihan screensaver pengguna, maklumat tema dan pilihan lain disimpan di sini. Kunci ini disingkat sebagai HKU. hkey_classes_root Kunci ini adalah alias yang menunjuk kepada hkey_local_machinesoftware yang menyimpan maklumat mengenai persatuan fail dan jenis mime. Singkatannya ialah HKCR.
hkey_current_user Kunci ini adalah alias yang menunjuk kepada profil dalam hkey_users untuk pengguna yang sedang dilog masuk. Anda akan melihat kunci ini disingkat sebagai HKCU. Setiap kunci mengandungi subkey yang seterusnya mengandungi subkey lain, nilai konfigurasi, atau kedua -duanya. Bekerja di bawah hkey_current_user cukup untuk bermain -main dengan beberapa skrip CLI dan kotak pasir. Hanya gunakan HKEY_LOCAL_MACHINE untuk data aplikasi dan situasi seluruh sistem di mana anda selesa bekerja dengan keizinan keselamatan Microsoft. Fahami apa yang sesuai untuk keadaan anda, ketahui di mana akaun PHP berjalan, dan buat kunci anda dengan sewajarnya.

Membuat kotak pasir

Saya cadangkan untuk menyediakan kunci khas untuk digunakan dalam skrip anda demi keselamatan, terutamanya apabila anda sedang membangun. Untuk kesilapan adalah manusia dan kita tidak mahu secara tidak sengaja menimpa apa -apa yang penting. Organisasi adalah satu lagi sebab untuk menubuhkan kunci yang ditetapkan. Terdapat banyak maklumat yang disimpan dalam pendaftaran dan kami ingin dapat mencari nilai kami sendiri dengan mudah. Editor Pendaftaran adalah program Microsoft yang digunakan untuk melihat dan mengedit pendaftaran. Untuk membuat kotak pasir kami, pergi untuk memulakan, taipkan "Regedit" di bar carian, dan pilih Regedit.exe dalam senarai hasil yang muncul. Pane kiri menunjukkan struktur pokok kekunci yang sedia ada manakala anak tetingkap kanan menunjukkan nilai yang disimpan di dalamnya. Kembangkan nod hkey_current_user, klik kanan pada kunci perisian dan pilih Kunci baru dari menu konteks popup. Sebagai alternatif, kita juga boleh melintasi pokok menggunakan kekunci anak panah supaya kunci perisian diserlahkan dan pilih Kunci baru dari menu Edit. Membekalkan nama untuk kekunci dan tekan Enter.

PHP Master | Akses Registry Windows dengan PHP Sekarang kita mempunyai tempat untuk bermain, izinkan saya memperkenalkan anda kepada fungsi yang ditawarkan Win32STD untuk memanipulasi penyertaan pendaftaran.

membaca dari pendaftaran

Fungsi reg_open_key () membuka sambungan ke pendaftaran dan mengembalikan sumber. Sumber ini kemudiannya digunakan dengan fungsi pendaftaran lain untuk bertindak pada sambungan itu. Fungsi reg_close_key () menutup sambungan. Reg_open_key () mengambil dua hujah: Pertama, pemalar yang telah ditetapkan yang mewakili salah satu daripada lima kumpulan pendaftaran utama, maka selebihnya jalan ke kunci yang dikehendaki.
<span><span><?php
</span></span><span><span>$keyConst = HKEY_CURRENT_USER;
</span></span><span>
</span><span><span>// backslash is used as an escape so it must be escaped itself
</span></span><span><span>$key = "Software\Intel";
</span></span><span>
</span><span><span>// open the registry key HKCUSoftwareIntel
</span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) {
</span></span><span>    <span>throw new Exception("Cannot access registry.");
</span></span><span><span>}
</span></span><span><span>...
</span></span><span>
</span><span><span>reg_close_key($reg);</span></span>
Sekarang anda mempunyai sambungan terbuka, anda boleh mendapatkan maklumat dari pendaftaran menggunakan fungsi reg_enum_key (), reg_enum_value () dan reg_get_value (). Jika hanya sumber yang diluluskan ke reg_enum_key () maka ia akan mengembalikan pelbagai subkey di bawah kekunci semasa. Nilai integer juga boleh diluluskan untuk mengambil subkey pada indeks tertentu.
<span><span><?php
</span></span><span><span>// retrieve an array of subkeys under the current key
</span></span><span><span>$subkeys = reg_enum_key($reg);
</span></span><span><span>foreach ($subkeys as $index => $subkey) {
</span></span><span>    <span>echo "The subkey at " . $index . " is " . $subkey . "n";
</span></span><span><span>}
</span></span><span>
</span><span><span>// retrieve a specific subkey
</span></span><span><span>$index = 2;
</span></span><span><span>$subkey = reg_enum_key($reg, $index);
</span></span><span><span>echo "The subkey at " . $index . " is " . $subkey . "n";</span></span>
Sebagai reg_enum_key () mengembalikan kekunci, reg_enum_value () mengembalikan nilai -nilai kunci. Fungsi ini menerima sumber dan indeks pilihan. Nama nilai boleh diluluskan kepada reg_get_value () untuk mendapatkan nilai nilai (bukanlah yang menyegarkan!).
<span><span><?php
</span></span><span><span>// retrieve an array of values under a given key
</span></span><span><span>$values = reg_enum_value($reg);
</span></span><span><span>foreach ($values as $index => $value) {
</span></span><span>    <span>echo "The value at " . $index . " is " . $value . " and stores ";
</span></span><span>    <span>echo reg_get_value($reg, $value) . "n";
</span></span><span><span>}
</span></span><span>
</span><span><span>// retrieve a specific value given the index
</span></span><span><span>$index = 1;
</span></span><span><span>$value = reg_enum_value($reg, $index);
</span></span><span><span>echo "The value at " . $index . " is " . $value . " and stores ";
</span></span><span><span>echo reg_get_value($reg, $value) . "n";</span></span>

menulis ke pendaftaran

Terdapat beberapa jenis data yang boleh anda pilih ketika membaca dan menulis ke pendaftaran. Mereka secara amnya tidak akibat kerana sifat dinamik PHP tetapi anda perlu menentukan jenis apabila anda menulis nilai. Kebanyakan masa anda akan mendapati diri anda menggunakan reg_sz atau reg_dword, tetapi inilah senarai jenis data yang terdedah oleh lanjutan:
  • reg_dword-nilai disimpan sebagai integer panjang 32-bit
  • reg_sz-Nilai disimpan sebagai rentetan panjang tetap
  • reg_expand_sz-nilai disimpan sebagai rentetan panjang berubah
  • reg_multi_sz - Nilai adalah senarai item yang dipisahkan oleh pembatas seperti ruang atau koma
  • reg_binary - nilai adalah rentetan binari
  • reg_none - nilai tidak mempunyai jenis data tertentu yang berkaitan dengannya
Fungsi reg_set_value () digunakan untuk menulis nilai kepada pendaftaran. Jika nilai sudah wujud maka nilai baru akan menimpanya, tetapi jika ia tidak wujud maka ia akan menciptanya. Fungsi ini mengambil empat argumen: pertama sumber terbuka, maka nama nilai, maka pemalar yang telah ditetapkan yang mewakili jenis data nilai dan akhirnya data itu sendiri.
<span><span><?php
</span></span><span><span>$keyConst = HKEY_CURRENT_USER;
</span></span><span>
</span><span><span>// backslash is used as an escape so it must be escaped itself
</span></span><span><span>$key = "Software\Intel";
</span></span><span>
</span><span><span>// open the registry key HKCUSoftwareIntel
</span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) {
</span></span><span>    <span>throw new Exception("Cannot access registry.");
</span></span><span><span>}
</span></span><span><span>...
</span></span><span>
</span><span><span>reg_close_key($reg);</span></span>

Contoh - Dongle Drive USB

Anda mungkin tertanya -tanya jika ada penggunaan praktikal untuk bekerja dengan pendaftaran. Dalam aplikasi berasaskan web, anda boleh menyimpan maklumat konfigurasi anda dalam pendaftaran. Jika anda telah menulis aplikasi desktop maka pendaftaran boleh menjadi tempat yang baik untuk menyimpan segala macam maklumat dari data aplikasi ke keutamaan pengguna. Windows sendiri menulis pelbagai jenis perkakasan yang menarik dan maklumat berkaitan dengan pendaftaran, dan sebahagian daripadanya berguna jika anda cukup kreatif. Katakan aplikasi PHP kami telah dilesenkan sedemikian rupa sehingga dongle USB dikehendaki dilampirkan ke pelayan untuk menjalankannya. Bagaimanakah PHP dapat mengesan kehadiran dongle? Jawapan di Windows terletak pada pendaftaran! Setiap peranti mempunyai pengecam unik, dan skrip dapat mencari kunci yang sesuai untuk pengenal apabila ia bermula untuk menentukan sama ada dongle dipasang atau tidak. Langkah pertama ialah menentukan pengenalpastian peranti. Untuk contoh ini saya akan menggunakan commodity thumbdrive. Cukup pasangkan pemacu ke port USB pada komputer, dan kemudian pergi ke memulakan, ketik "peranti" di bar carian, dan pilih Pengurus Peranti dalam senarai hasil yang muncul. Cari peranti dalam Pengurus Peranti, klik kanan entri, dan pilih Properties dari menu konteks. Kemudian pergi ke tab butiran tetingkap Properties dan pilih "Laluan Instance Device" dari senarai drop down. Urutan nombor heksadesimal ke arah akhir nilai ialah ID peranti (ditandakan dengan warna merah).

PHP Master | Akses Registry Windows dengan PHP Windows merekodkan kehadiran peranti USB di bawah pelbagai subkey hkey_local_machinesystemcurrentcontrolsetservices. Media penyimpanan seperti thumbdrive saya akan muncul di bawah USBSTOR; Peranti lain mungkin muncul di bawah USBAUDIO, USBCCGP, dan USBEHCI. Juga, ambil perhatian bahawa hkey_local_machine akan diakses hanya menjadi akaun istimewa. Jadi sekarang kita hanya boleh mencari subkey enum kunci untuk contoh peranti. Apabila pemacu dilampirkan, ia akan disenaraikan, dan apabila ia tidak dilampirkan, ia tidak akan disenaraikan.

<span><span><?php
</span></span><span><span>$keyConst = HKEY_CURRENT_USER;
</span></span><span>
</span><span><span>// backslash is used as an escape so it must be escaped itself
</span></span><span><span>$key = "Software\Intel";
</span></span><span>
</span><span><span>// open the registry key HKCUSoftwareIntel
</span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) {
</span></span><span>    <span>throw new Exception("Cannot access registry.");
</span></span><span><span>}
</span></span><span><span>...
</span></span><span>
</span><span><span>reg_close_key($reg);</span></span>
Pemeriksaan mudah ini juga membuka beberapa kemungkinan menarik lain; Anda boleh dengan mudah kod antara muka pentadbir sensitif yang mengesahkan dongle dan permintaan dihantar dari pelayan itu sendiri dengan memeriksa $ _server ["Remote_addr"]. Penubuhan ini memerlukan pengguna untuk secara fizikal di pelayan yang ditetapkan dan menyediakan bentuk pengesahan fizikal.

Kesimpulan

Sepanjang artikel ini kita telah melihat apa yang Windows Registry dan sampel kecil dari maklumat apa yang boleh didapati di dalamnya. Anda boleh menulis data konfigurasi anda sendiri, atau anda boleh membaca maklumat semula, menggunakan fungsi yang disediakan oleh lanjutan Win32Std. Dengan cara ini, lanjutan Win32Std menawarkan lebih daripada sekadar akses ke pendaftaran. Jika anda berminat, lihat WildPhp.Free.fr/wiki/doku.php?id=win32std:Index untuk melihat apa lagi yang ditawarkannya. imej melalui Fotolia

Soalan Lazim (Soalan Lazim) Mengenai Mengakses Pendaftaran Windows dari PHP

Bagaimana saya boleh mengakses Windows Registry dari php?

Mengakses Windows Registry dari PHP boleh dicapai dengan menggunakan kelas COM dalam PHP. Kelas ini membolehkan PHP berinteraksi dengan mana -mana objek COM, termasuk Registry Windows. Anda boleh membuat contoh baru kelas COM dan kemudian menggunakan kaedah regread untuk membaca nilai dari pendaftaran. Walau bagaimanapun, sila ambil perhatian bahawa kaedah ini memerlukan keizinan yang betul untuk mengakses pendaftaran. Itu menyimpan tetapan peringkat rendah untuk sistem operasi dan untuk aplikasi yang memilih untuk menggunakan pendaftaran. Anda mungkin perlu mengaksesnya dari PHP untuk pelbagai sebab, seperti untuk mendapatkan maklumat sistem, periksa kehadiran perisian tertentu, atau untuk mengubah suai tetapan sistem. Walau bagaimanapun, mengubah suai pendaftaran perlu dilakukan dengan berhati -hati kerana ia boleh menjejaskan operasi sistem. PHP menggunakan kaedah regwrite kelas COM. Walau bagaimanapun, ini perlu dilakukan dengan berhati -hati kerana pengubahsuaian yang salah boleh menyebabkan masalah serius yang mungkin memerlukan anda memasang semula sistem operasi anda.

Kebenaran apa yang saya perlukan untuk mengakses Windows Registry dari PHP?

Untuk mengakses Windows Registry dari PHP, anda perlu mempunyai keistimewaan pentadbiran. Ini kerana pendaftaran mengandungi sistem kritikal dan tetapan aplikasi. Sekiranya anda menjalankan skrip anda dari pelayan web, akaun pengguna pelayan juga perlu mempunyai keizinan yang diperlukan. Dianjurkan secara hierarki sebagai pokok, dengan kunci dan nilai. Kekunci adalah serupa dengan folder, dan nilai adalah entri data dalam kunci. Setiap kekunci boleh mengandungi subkey, dan setiap subkey boleh mengandungi subkey selanjutnya, membentuk struktur pokok. PHP, kesilapan boleh dikendalikan menggunakan fungsi pengendalian ralat PHP standard. Sebagai contoh, anda boleh menggunakan fungsi set_error_handler untuk menentukan pengendali ralat tersuai. Pendaftaran dari PHP pada sistem bukan Windows. Registry Windows adalah ciri khusus untuk sistem pengendalian Windows.

Apakah kelas COM dalam PHP? Objek com. Com (model objek komponen) adalah standard antara muka binari untuk komponen perisian yang diperkenalkan oleh Microsoft. Ia membolehkan PHP berinteraksi dengan mana -mana objek COM, termasuk Windows Registry. . Ini boleh dilakukan dengan menggunakan kaedah RegDelete kelas COM. Walau bagaimanapun, ini perlu dilakukan dengan berhati -hati kerana memadam kekunci yang salah boleh menyebabkan masalah yang serius. Pengubahsuaian yang salah boleh menyebabkan masalah serius yang mungkin memerlukan anda memasang semula sistem operasi anda. Oleh itu, disarankan untuk menyokong pendaftaran sebelum membuat apa -apa perubahan dan hanya membuat perubahan jika anda yakin dengan apa yang anda lakukan.

Atas ialah kandungan terperinci PHP Master | Akses Registry Windows dengan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn