Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | Greifen Sie mit PHP auf die Windows -Registrierung zu

PHP Master | Greifen Sie mit PHP auf die Windows -Registrierung zu

Jennifer Aniston
Jennifer AnistonOriginal
2025-02-25 10:09:10477Durchsuche

PHP Master | Greifen Sie mit PHP auf die Windows -Registrierung zu

Key Takeaways

  • Die Windows-Registrierung, auf eine hierarchisch strukturierte Datenbankspeicherkonfigurationsinformationen, kann mit der Win32std-Erweiterung mit PHP zugegriffen werden, die als vorgefertigte Bibliothek aus downloads.php.net/pierre/.
  • heruntergeladen werden kann
  • Die Windows -Registrierung ist in fünf Hauptgruppen unterteilt, die als Schlüssel bekannt sind: hkey_current_config, hkey_local_maachine, hkey_users, hkey_classes_root und hkey_current_user. Jeder Schlüssel enthält Unterkaser, die wiederum andere Unterkaser, Konfigurationswerte oder beides enthalten.
  • Die Funktion reg_open_key () öffnet eine Verbindung zur Registrierung und gibt eine Ressource zurück, die mit anderen Registrierungsfunktionen verwendet werden kann, um auf diese Verbindung zu reagieren. Die Funktion rEG_CLOSE_KEY () schließt die Verbindung. Die Funktion reg_set_value () wird verwendet, um einen Wert in die Registrierung zu schreiben, vorhandene Werte zu überschreiben oder neue zu erstellen.
  • Die Windows-Registrierung kann für praktische Anwendungen verwendet werden, z. B. für das Speichern von Konfigurationsinformationen für webbasierte Anwendungen, das Speichern von Anwendungsdaten und Benutzereinstellungen für Desktop-Anwendungen oder Überprüfung des Vorhandenseins von Hardwaregeräten wie einem USB-Dongle. Das Ändern der Registrierung sollte jedoch mit Vorsicht erfolgen, da dies den Betrieb des Systems beeinflussen kann.
Bist du jemals morgens aufgewacht und mir überdacht: "Ich möchte heute etwas Verrücktes machen?" Nun, wenn heute einer dieser Morgen war, dann haben Sie Glück. Ich möchte Ihnen eine kleine Einführung zum Zugriff auf die Windows -Registrierung mit PHP geben. PHP… die Registrierung… verrückt! Die Windows -Registrierung ist einfach eine hierarchisch strukturierte Datenbank, in der das Windows -Betriebssystem und andere Anwendungen wichtige Konfigurationsinformationen speichern. Alle Arten von Daten werden in der Registrierung gespeichert: Benutzerprofile, Datei-Assoziationen, Hardwareinformationen, serielle Zahlen und mehr. Mit Funktionen, die in der Win32std-Erweiterung verfügbar sind, können Ihre Windows-basierten PHP-Anwendungen auch auf die Registrierung zugreifen. Die Win32STD-Erweiterung kann als vorgefertigte Bibliothek von downloads.php.net/pierre/ heruntergeladen werden. Lassen Sie es einfach in den Ext -Ordner Ihres PHP fallen, aktualisieren Sie Ihre Php.ini -Datei und starten Sie Apache gegebenenfalls neu. Beachten Sie, dass die DLLs, die Sie herunterladen würden, 32-Bit sind. Wenn Sie also einen 64-Bit-Build von Wampserver oder so verwenden, haben Sie nicht viel Erfolg. Sie müssen WampServer entweder auf einen 32-Bit-Build herabstufen oder versuchen, die Bibliothek selbst zu kompilieren.

Das Registrierungslayout

Das Register hat den Ruf, ein dunkler, gefährlicher und beängstigender Ort im Betriebssystem zu sein. Dies ist wahrscheinlich eine übertriebene Angst, aber ich wiederhole Microsoft's Registry Mantra: „Bevor Sie die Registrierung ändern, stützen Sie sie und stellen Sie sicher, dass Sie verstehen, wie Sie sie wiederherstellen können, wenn ein Problem auftritt. Ungesetzte Änderungen können zu ernsthaften Problemen führen, bei denen Sie möglicherweise Ihr Betriebssystem neu installieren müssen. “ Wie sieht dieser dunkle, beängstigende Ort aus? Die Windows -Registrierung ist in 5 Hauptgruppen unterteilt, die als Schlüssel bekannt sind: hkey_current_config
In diesem Schlüssel wird Informationen über die Hardware des Computers wie Überwachungsauflösung und Lautsprechereinstellungen gespeichert. Möglicherweise sehen Sie, dass dieser Schlüssel als HKCC abgekürzt wird. hkey_local_maachine
Dieser Schlüssel enthält Konfigurationsinformationen für den Computer wie Drucker, Software- und Netzwerkinformationen. Der Schlüssel wird zuerst geladen und dann die Einträge aus dem Profil des Benutzers überschreiben verschiedene Werte. Sie werden diesen Schlüssel als HKLM sehen. hKey_users
Dieser Schlüssel enthält alle Profile für die lokalen Benutzerkonten auf der Maschine. Solche Dinge wie die Bildschirmschonerauswahl des Benutzers, die Themeninformationen und andere Einstellungen werden hier gespeichert. Dieser Schlüssel wird als HKU abgekürzt. hKey_classes_root
Dieser Schlüssel ist ein Alias, der auf hkey_local_maachinesoftware verweist, die Informationen zu Datei-Assoziationen und MIME-Typen speichert. Die Abkürzung ist HKCR. hKey_current_user
Dieser Schlüssel ist ein Alias, der auf das Profil in HKEY_USERS für den derzeit angemeldeten Benutzer hinweist. Sie werden diesen Schlüssel als HKCU sehen. Jeder Schlüssel enthält Unterkaser, die wiederum andere Unterkaser, Konfigurationswerte oder beides enthalten. Das Arbeiten unter hkey_current_user reicht aus, um mit ein paar CLI -Skripten und einem Sandkasten herumzuspielen. Verwenden Sie nur HKEY_LOCAL_MACHINE für systemweite Anwendungsdaten und Situationen, in denen Sie sich wohl mit den Sicherheitsberechtigungen von Microsoft arbeiten. Verstehen Sie, was für Ihre Situation richtig ist, wissen Sie, welches Konto PHP ausführt, und erstellen Sie Ihre Schlüssel angemessen.

eine Sandbox machen

Ich empfehle, einen speziellen Schlüssel für die Verwendung in Ihren Skripten für die Sicherheit einzurichten, insbesondere bei der Entwicklung. Zu irrt, ist menschlich und wir wollen nichts Wichtiges versehentlich überschreiben. Die Organisation ist ein weiterer Grund für die Einrichtung eines benannten Schlüssels. In der Registrierung werden viele Informationen gespeichert, und wir möchten in der Lage sein, unsere eigenen Werte leicht zu finden. Registrierungseditor ist ein Microsoft -Programm, mit dem die Registrierung angezeigt und bearbeitet wird. Um unsere Sandbox zu erstellen, geben Sie in der Suchleiste „regelmäßig“ ein und wählen Sie in der angezeigten Ergebnisliste regeledit.exe aus. Das linke Bereich zeigt eine Baumstruktur der vorhandenen Tasten, während der rechte Bereich Werte zeigt, die in ihnen gespeichert sind. Erweitern Sie den Knoten hkey_current_user, klicken Sie mit der rechten Maustaste auf den Softwareschlüssel und wählen Sie im Popup-Kontextmenü neue> Schlüssel. Alternativ hätten wir mit den Pfeiltasten auch durch den Baum durchquert werden, damit der Softwareschlüssel hervorgehoben wird, und im Menü Bearbeiten neu> Schlüssel auszuwählen. Geben Sie einen Namen für die Taste an und drücken Sie die Eingabetaste.

PHP Master | Greifen Sie mit PHP auf die Windows -Registrierung zu

Nachdem wir einen Platz zum Spielen haben, erlauben Sie mir, Sie in die Funktionen vorzustellen, die Win32std anbietet, um Registrierungseinträge zu manipulieren.

Lesen aus der Registrierung

Die Funktion reg_open_key () öffnet eine Verbindung zur Registrierung und gibt eine Ressource zurück. Diese Ressource wird dann mit anderen Registrierungsfunktionen verwendet, um auf diese Verbindung zu reagieren. Die Funktion rEG_CLOSE_KEY () schließt die Verbindung. reg_open_key () nimmt zwei Argumente ein: zuerst eine vordefinierte Konstante, die eine der fünf primären Registrierungsgruppen darstellt, dann der Rest des Pfades zum gewünschten Schlüssel.
<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>
Nachdem Sie eine offene Verbindung haben, können Sie Informationen aus der Registrierung mit den Funktionen reg_enum_key (), reg_enum_value () und reg_get_value () abrufen. Wenn nur die Ressource an reg_enum_key () übergeben wird, wird ein Array von SubKeys unter den aktuellen Schlüssel zurückgegeben. Ein ganzzahliger Wert kann auch übergeben werden, um den Unterschlüssel in einem bestimmten Index abzurufen.
<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>
ASR_ENUM_KEY () gibt Tasten zurück, Reg_enum_Value () gibt die Werte der Tasten zurück. Die Funktion akzeptiert die Ressource und einen optionalen Index. Der Wertname kann an reg_get_value () übergeben werden, um den Wert des Wertes abzurufen (ist das nicht ein Schluck!).
<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>

Schreiben in die Registrierung

Es gibt eine Handvoll Datentypen, aus denen Sie beim Lesen und Schreiben in die Registrierung auswählen können. Sie sind im Allgemeinen aufgrund der dynamischen Natur von PHP von geringer Folge, aber Sie müssen den Typ angeben, wenn Sie einen Wert schreiben. Meistens verwenden Sie Reg_SZ oder Reg_DWORD, aber hier finden Sie eine Liste der Datentypen, die durch die Erweiterung ausgesetzt sind:
  • reg_dword-Wert wird als 32-Bit-lange Ganzzahl gespeichert
  • reg_sz-Der Wert wird als String mit fester Länge
  • gespeichert
  • reg_expand_sz-Der Wert wird als String für variable Länge
  • gespeichert
  • reg_multi_sz - Wert ist eine Liste der Elemente, die von einem Trennzeichen wie einem Raum oder einem Komma
  • getrennt sind
  • reg_binary - Wert ist eine binäre Zeichenfolge
  • reg_none - Wert hat keinen bestimmten Datentyp zugeordnet
Die Funktion reg_set_value () wird verwendet, um einen Wert in die Registrierung zu schreiben. Wenn der Wert bereits vorhanden ist, überschreibt der neue Wert ihn, aber wenn er nicht existiert, wird er erstellt. Die Funktion nimmt vier Argumente an: zuerst die offene Ressource, dann der Name des Wertes, dann eine vordefinierte Konstante, die den Datentyp des Wertes und schließlich die Daten selbst darstellt.
<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>

Ein Beispiel - USB Drive Dongle

Möglicherweise fragen Sie sich, ob es eine praktische Verwendung für die Arbeit mit der Registrierung gibt. In einer webbasierten Anwendung können Sie Ihre Konfigurationsinformationen in der Registrierung speichern. Wenn Sie eine Desktop -Anwendung geschrieben haben, kann die Registrierung ein guter Ort sein, um alle Arten von Informationen von Anwendungsdaten zu Benutzereinstellungen zu speichern. Windows selbst schreibt alle möglichen interessanten Hardware- und staatlich verwandten Informationen in die Registrierung, und ein Teil davon könnte nützlich sein, wenn Sie kreativ genug sind. Angenommen, unsere PHP -Anwendung wurde so lizenziert, dass ein USB -Dongle an den Server angeschlossen werden muss, um ihn auszuführen. Wie kann PHP das Vorhandensein des Dongle erkennen? Die Antwort unter Windows liegt in der Registrierung! Jedes Gerät verfügt über eine eindeutige Kennung, sodass das Skript die entsprechenden Schlüssel für die Kennung durchsuchen kann, wenn es startet, um festzustellen, ob der Dongle angeschlossen ist oder nicht. Der erste Schritt besteht darin, die Kennung des Geräts zu bestimmen. In diesem Beispiel verwende ich einen Rohstoff -Thumbdrive. Schließen Sie das Laufwerk einfach an einen USB -Anschluss auf dem Computer an und geben Sie dann zu Start ein, geben Sie "Gerät" in die Suchleiste ein und wählen Sie Geräte -Manager in der angezeigten Ergebnisliste. Suchen Sie das Gerät im Geräte -Manager, klicken Sie mit der rechten Maustaste auf den Eintrag und wählen Sie im Kontextmenü Eigenschaften. Gehen Sie dann zur Registerkarte Details des Eigenschaftenfensters und wählen Sie in der Dropdown -Liste "Geräteinstanzpfad" aus. Die Abfolge der hexadezimalen Zahlen gegen Ende des Wertes ist die Geräte -ID (in Rot markiert).

PHP Master | Greifen Sie mit PHP auf die Windows -Registrierung zu

Windows zeichnet das Vorhandensein von USB -Geräten unter verschiedenen Subkeys von hkey_local_maachinesystemcurrentControlsetServices auf. Speichermedien wie mein Daumen werden unter USBStor erscheinen. Andere Geräte können unter USBaudio, USBCCGP und USBEHCI erscheinen. Beachten Sie auch, dass HKEY_LOCAL_MACHINE nur zugänglich sein wird, nur um privilegierte Konten. Jetzt können wir also einfach den Enum -Unterschlüssel des Schlüssels nach der Geräteinstanz durchsuchen. Wenn das Laufwerk beigefügt ist, wird es aufgeführt und wenn es nicht angehängt ist, wird es nicht aufgeführt.
<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>
Diese einfache Überprüfung eröffnet auch einige andere interessante Möglichkeiten. Sie können einfach eine sensible Administratorschnittstelle codieren, die den Dongle überprüft, und die Anforderung wird vom Server selbst gesendet, indem Sie $ _server ["remote_addr"] überprüfen. Für diese Einrichtung muss der Benutzer physisch auf dem benannten Server und eine Form der physikalischen Authentifizierung bereitstellen.

Abschließend

Im Laufe dieses Artikels haben wir gesehen, wie sich die Windows -Registrierung befindet und welche Informationen darin enthalten sind. Sie können Ihre eigenen Konfigurationsdaten schreiben oder Informationen unter Verwendung der Funktionen der Win32std -Erweiterung zurücklesen. Übrigens bietet die Win32std -Erweiterung mehr als nur Zugang zur Registrierung. Wenn Sie interessiert sind, schauen Sie sich wildphp.free.fr/wiki/doku.php?id=win32std:Index an, um zu sehen, was es sonst noch bietet. Bild über Fotolien

häufig gestellte Fragen (FAQs) zum Zugriff auf die Windows -Registrierung von PHP

Wie kann ich von PHP auf die Windows -Registrierung zugreifen? Mit dieser Klasse kann PHP mit allen COM -Objekten interagieren, einschließlich der Windows -Registrierung. Sie können eine neue Instanz der COM -Klasse erstellen und dann mit der Regeldethode einen Wert aus der Registrierung lesen. Bitte beachten Sie jedoch, dass für diese Methode die richtigen Berechtigungen erforderlich sind, um auf die Registrierung zuzugreifen. Dadurch werden Einstellungen auf niedriger Ebene für das Betriebssystem und für Anwendungen gespeichert, die sich für die Verwendung der Registrierung entscheiden. Möglicherweise müssen Sie aus verschiedenen Gründen von PHP darauf zugreifen, z. B. um Systeminformationen abzurufen, auf das Vorhandensein bestimmter Software zu überprüfen oder die Systemeinstellungen zu ändern. Das Ändern der Registrierung sollte jedoch mit Vorsicht erfolgen, da dies den Betrieb des Systems beeinflussen kann. PHP unter Verwendung der RegWrite -Methode der COM -Klasse. Dies sollte jedoch mit äußerster Vorsicht erfolgen, da falsche Änderungen schwerwiegende Probleme verursachen können, bei denen Sie möglicherweise Ihr Betriebssystem neu installieren müssen.

Welche Berechtigungen muss ich von PHP auf die Windows -Registrierung zugreifen, um von PHP auf die Windows -Registrierung zugreifen zu können. Dies liegt daran, dass die Registrierung kritische System- und Anwendungseinstellungen enthält. Wenn Sie Ihr Skript von einem Webserver ausführen, muss das Benutzerkonto des Servers auch über die erforderlichen Berechtigungen verfügen. Hierarchisch als Baum organisiert, mit Schlüsseln und Werten. Tasten ähneln den Ordnern, und Werte sind die Dateneinträge innerhalb der Tasten. Jeder Schlüssel kann Unterkollegen enthalten, und jeder Unterschlüssel kann weitere Unterkämpfe enthalten und eine Baumstruktur bilden.

Wie kann ich beim Zugriff auf die Windows -Registrierung von Php? PHP, Fehler können mit den Standardfunktionen der Standard -PHP -Fehler behandelt werden. Beispielsweise können Sie die Funktion set_error_handler verwenden, um einen benutzerdefinierten Fehlerhandler zu definieren. Registrierung von PHP auf einem Nicht-Windows-System. Die Windows-Registrierung ist eine Funktion, die für das Windows-Betriebssystem spezifisch ist. Com Objekte. COM (Komponentenobjektmodell) ist ein Binary-Interface-Standard für Softwarekomponenten, die von Microsoft eingeführt wurden. Es ermöglicht PHP, mit allen COM -Objekten zu interagieren, einschließlich der Windows -Registrierung. . Dies kann unter Verwendung der RegDelete -Methode der COM -Klasse erfolgen. Dies sollte jedoch mit äußerster Vorsicht erfolgen, da das Löschen des falschen Schlüssels schwerwiegende Probleme verursachen kann. Falsche Änderungen können schwerwiegende Probleme verursachen, bei denen Sie möglicherweise Ihr Betriebssystem neu installieren müssen. Daher wird empfohlen, die Registrierung zu sichern, bevor Sie Änderungen vornehmen, und nur Änderungen vorzunehmen, wenn Sie sicher sind, was Sie tun.

Das obige ist der detaillierte Inhalt vonPHP Master | Greifen Sie mit PHP auf die Windows -Registrierung zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn