Beschreibung Die RegWrite-Methode wird verwendet, um einen Wert in die Windows-Registry zu schreiben. Parameter Der Name-Parameter ist ein String, der den zu schreibenden Wert oder Schlüssel angibt. Der Parameter Value gibt die Daten an, die in die Registry geschrieben werden sollen. Der Wert wird automatisch in einen String umgewandelt, wenn Typ REGSZ oder REGEXPANDSZ ist, und auf eine Ganzzahl, wenn Typ REGDWORD oder REGBINARY ist. Der optionale Typ-Parameter gibt den Datentyp für den Wert an, gültige Optionen sind REGSZ, REGEXPANDSZ, REGDWORD und REGBINARY. Registry-Bearbeitung mit VBScript 1. VBScript Dies ist nur eine kurze Einführung in die Verwendung von VBScript zum Lesen und Bearbeiten der Registrierung. VBScript basiert auf Microsofts Visual Basic. Es gibt andere Alternativen, einschließlich JScript, Konsole Registry Tool Reg. exe und Inf-Dateien für die Bearbeitung der Registrierung. Dies sind alle leistungsstarke Methoden, um die Registrierung zu bearbeiten und VBS und JS werden bei der Entführung Ihrer Windows - und IE-Einstellungen verwendet, einschließlich der Sperrung der Registrierung. So können Sie ein Skript verwenden, um Ihre Registrierung zu entsperren, als Anmeldeskripts und automatisieren repetitive Aufgaben in der Bereitstellung. Weitere Informationen zum Freischalten von regedit finden Sie in meinem Artikel zur Quellregelung. Windows XPs Windows Script Host unterstützt VBScript (und JScript). Speichern Sie einfach die Textdatei, die im Editor als vbs erstellt wurde, und doppelklicken Sie, um es auszuführen. Sie können auch die Befehlszeilenversion cscript. exe verwenden. Ihre Drittanbieter-Sicherheits-Tools (z. B. Script Defender und Anti-Virus) sollten aufwarten Warnungen über bösartiges Skript und bieten, um es zu stoppen. Wenn Sie wissen, dass das Skript sicher ist, klicken Sie auf OK oder lassen Sie es ausführen. Wenn Sie mehr über VBS und Shell-Objekte erfahren möchten, lesen Sie einige Bücher und Online-Tutorials. Aber du kannst schnell die VBS-Syntax lernen, um die Registry zu bearbeiten, ohne VBS sehr ausführlich zu lernen, wie du hier herauskommst. 2. Die Shell-Objekte Die drei Shell-Objekte für die Registry sind: RegRead. RegWrite und RegDelete. Nicht alle Datenwerte werden unterstützt und Binärwerte stellen Schwierigkeiten dar, die nachfolgend erläutert werden. In der folgenden Syntax bezieht sich strName auf den Schlüssel oder den Wert in Anführungszeichen. Verwenden Sie einen vollständigen Pfad oder eine Standardabkürzung (HKCR, HKCU, HKLM den Rest vollständigen Pfad nur). Der Pfad, der mit a endet, zeigt einen Schlüssel an und das, was mit einem Wertnamen einen Wertnamen endet. QuotHKCUTestingSubkeyquot bezieht sich auf den Schlüssel oder den Standardwert des Schlüssels und quotHKCUTestingSubkeyMy Documentsquot bezieht sich auf den Wertnamen Meine Dokumente der Subkey-Taste. Sei vorsichtig beim Ausprobieren von Skripten. Öffnen Sie regedit, damit Sie verfolgen können, was passiert. Sichern Sie sich vorher vorher. Testen Sie immer Ihre Skripte gründlich. 2.1. RegWrite Object. RegWrite (strName, anyvalue, strType) Der RegWrite kann nicht in REGMULTISZ Strings schreiben und beschränkt sich auf das Schreiben von nur vier Bytes oder einem DWORD in REGBINARY. Die folgende einfache VBS erstellt vier Registry-Unterschlüssel mit verschiedenen String-Typen innerhalb eines Testschlüssels im HKCU-Bienenstock. Für Klarheit trennte ich die Codes mit Zeilenumbrüchen. Es gibt keine Aufforderung (außer deinem Antivirus) oder Bestätigungsdialog. Die erste Codezeile definiert das Shell-Objekt. Der erste RegWrite-Code schreibt einen Standardwert in den Unterschlüssel. Wenn der Schlüssel fehlt, wird er es schaffen. Wenn es bereits vorhanden ist, aber einen anderen Wert hat, wird es es ändern. Der zweite Code ist alles in einer Zeile (wie angegeben). Set Shell Create (quotWScript. Shellquot) Shell. RegWrite quotHKCUTestingSubkeyquot, 0, quotREGDWORDquot Shell. RegWrite quotHKCUTestingSubkeyMy Documentsquot, quotUSERPROFILEMy Documentsquot, quotREGEXPANDSZquot Shell. RegWrite quotHKCUTestingSubkeyValueNamequot, quotHelloquot, quotREGSZquot Shell. RegWrite quotHKCUTestingSubkeyValueName2quot, 1, quotREGBINARYquot Sie auch das Format-Objekt verwenden können WshShell : Set WshShell Create (quotWScript. Shellquot) WSHShell. RegWrite quotHKCUTestingSubkeyquot, 0, ist quotREGDWORDquot WSHShell. RegWrite quotHKCUTestingSubkeyMy Documentsquot, quotUSERPROFILEMy Documentsquot, quotREGEXPANDSZquot WSHShell. RegWrite quotHKCUTestingSubkeyValueNamequot, quotHelloquot, quotREGSZquot WSHShell. RegWrite quotHKCUTestingSubkeyValueName2quot, 1, in der Registry quotREGBINARYquot der resultierende Schlüssel Hier gezeigt (Abb. 1). Feige. 1. Der neue Registrierungsschlüssel, der mit den obigen Skripten erstellt wurde. Beachten Sie, dass der Binärwert nur vier Bytes hat. 2.2 RegRead Object. RegRead (strName) Wenn der Schlüsselname angegeben ist, liest RegRead seinen Standardwert. Wenn der Schlüssel nicht vorhanden ist, gibt er einen Fehler zurück. Das folgende Skript liest den obigen Registrierungsschlüssel außer dem Binärwert. Im Gegensatz zu den beiden anderen Objekten müssen Sie den Pfad in Klammern umschließen. Setzen Sie WshShell CreateObject (quotWScript. Shellquot) Wscript. Echo WshShell. RegRead (quotHKCUTestingSubkeyquot) Wscript. Echo WshShell. RegRead (quotHKCUTestingSubkeyMy Documentsquot) Wscript. Echo WshShell. RegRead (quotHKCUTestingSubkeyValueNamequot) Das Echo-Objekt zeigt den Wert in einem WSH-Fenster eins nach dem anderen an. Das erste Echo gibt dies (Abb. 2). Feige. 2. WSH-Meldungsfeld mit 0. Sie können einen aussagekräftigen Satz für den Wert hinzufügen und alle drei zusammenhängen (Abb. 3) mit einem modifizierten Skript wie folgt. Setzen Sie WshShell CreateObject (quotWScript. Shellquot) ein WshShell. RegRead (quotHKCUTestingSubkeyquot) b WshShell. RegRead (quotHKCUTestingSubkeyMy Documentsquot) c WshShell. RegRead (quotHKCUTestingSubkeyValueNamequot) Wscript. Echo quotThe HKCUTestingSubkeys Standardwert isquot, a, quot, quainhe My Documents value isquot , B, quot, quotthe WertName isquot, c, quot. quot Abb. 3. WSH-Meldungsfeld mit vollständiger Meldung, die alle drei Tasten liest. Sie können auch ein anderes Beispiel für meine VBS finden, um die Registry zu lesen und zu entsperren, wenn es deaktiviert ist, sehen Sie diesen Artikel für Details. Laden Sie das Skript herunter und untersuchen Sie es. 2.2.1. RegRead REGBINARY-Werte Um binäre Werte (binäre oder hexadezimale Daten) zu lesen, muss das Skript das Array lesen und mitteilen. Das folgende Skript liest diesen Registrierungsschlüssel: HKEYCURRENTUSERSoftwareMicrosoft WindowsCurrentVersionPoliciesExplorer NoDriveTypeAutoRun REGBINARY 5f 00 00 00 Set Shell CreateObject (quotWScript. Shellquot) arr Shell. RegRead (quotHKCUSoftwareMicrosoftWindows CurrentVersionPoliciesExplorerNoDriveTypeAutoRunquot) Für I LBound (arr) Zu UBound (arr) a (I) CInt (arr (I)) b (I) Hex (CInt (arr (I))) Weiter Wscript. Echo quotDie Registrierungsschlüsselnamen Dezimalwert isquot, Join (a), quot, quot, quotthe hex value isquot, Join (b), quot. quot msgbox Join (a) ,, quotDer Dezimalwert isquot msgbox Join (b) ,, Der hexadezimale Wert isquot Sie können das Meldungsfeld anpassen. Das obige Wscript. Echo-Objekt gibt Ihnen diese Ausgabe (Abb. 4) unter Berücksichtigung, dass 5f 95 in Dezimal (5x1615) ist: Abb. 4. WSH-Meldungsfeld, das den Registrierungsschlüsseln Dezimal - und Hex-Werte im Array gibt. Die Msgbox gibt Ihnen diese beiden wiederum (Abb. 5 und 6): Abb. 5. WSH-Box mit dem Dezimalwert von 95 im Array. Feige. 6. WSH-Box mit dem Hex-Wert von 5F im Array. Dies ist ein weiterer Weg, es zu tun, diesmal einen anderen Hex-Key zu lesen. Setzen Sie Shell CreateObject (quotWScript. Shellquot) arrRegValue Shell. RegRead (quotHKCUSoftwareMicrosoftInternet ExplorerDocument WindowsWidthquot) strRegValue StrPad (Hex (arrRegValue (0)), 2, quot0quot) amp quot quot amp StrPad (Hex (arrRegValue (1)), 2, quot0quot) (Hex (arrRegValue (3)), 2, quot0quot) Wscript. Echo quotDie Registrierungsschlüsselnamen hexadezimaler Wert isquot, strRegValue Private Function (Hex (arrRegValue (2)), 2, quot0quot) amp quot quot amp StrPad (Hex (arrRegValue (3) StrPad (ungepolstert, Länge, Padding) StrPad String ((Länge-Len (Ungepolstert)), Padding) Verstärker Ungepolsterte Endfunktion 2.3. Regdelete Sei sehr vorsichtig mit diesem, da es keine Aufforderung oder Rückgängigmachen gibt. Es wird nur der Schlüssel - oder Wertname benötigt, nicht der Daten - oder String-Typ. Diese VBS löscht den ValueName (Hello) aus der obigen Testing-Taste. Set Shell CreateObject (quotWScript. Shellquot) Dieses VBS löscht den folgenden Unterschlüssel quotSubkeyquot mit allen darin enthaltenen Inhalten, wobei der Testschlüssel intakt bleibt. Set Shell CreateObject (quotWScript. Shellquot) Honeycutt, Jerry, Microsoft Windows XP Registry Guide (Redmond: Microsoft Press, 2003) Knittel, Brian, Windows XP Unter der Kapuze. Hardcore Windows Scripting und Command Line Power (Indianapolis: Que, 2003) Das Microsoft Windows Resource Kit Scripting Team, Windows 2000 Scripting Guide (Redmond: Microsoft Press, 2003) Ein besonderer Dank an diejenigen, die mich in öffentlichen Foren in Bezug auf RegRead binäre Daten unterstützt haben . Copyright 2003-2005 von Kilian. Alle meine Artikel einschließlich Grafiken sind Quoten isquot ohne Garantien jeglicher Art. Hiermit lehne ich hiermit alle Garantien hinsichtlich der bereitgestellten Informationen ab. In keinem Fall hafte ich für irgendwelche Schäden jeglicher Art, die sich aus den Angaben ergeben. Die Artikel sind in gutem Glauben und nach einem gewissen Grad der Überprüfung, aber sie können technische oder typografische Fehler enthalten. Links zu anderen Web-Ressourcen können jederzeit geändert werden und sind außerhalb der Kontrolle des Autors. Artikel können jederzeit hinzugefügt, entfernt, bearbeitet oder verbessert werden. Keine Unterstützung wird vom Autor zur Verfügung gestellt. Dies ist keine offizielle Support-Seite für alle erwähnten Produkte. Alle genannten Produkte sind Marken ihrer Firmen. Bearbeiten Sie die Registry auf eigene Gefahr und sichern Sie sich zuerst. Letztes Update 22 Mrz 2005Letzte Zeit, die ich gepostet habe Ich gab dir eine Funktion, die eine einfache Möglichkeit gab, die Registry mit VBScript zu lesen. In diesem Beitrag wir8217ll verwenden das gleiche Wscript. shell Objekt wie das letzte Mal, verwenden Sie einfach eine andere method8211 die RegWrite-Methode Im Auge behalten, schreiben in die Registrierung kann gefährlich für die Stabilität Ihres Systems. Wenn Sie nicht genau wissen, müssen Sie den Registrierungsort schreiben und mit welchem Wert, ich empfehle nicht, in die Registrierung zu schreiben. Ich habe einen gemachten Registry-Standort verwendet, so dass dieses Skript so sicher sein sollte, wie ich es machen kann. Dieses Beispiel schreibt an HKeyCurrentUserVBScriptAdmin den Schlüssel Teststring. Das ist ein REGSZ (oder String) Wert. You8217ll bemerken, dass dieser Wert wahrscheinlich doesn8217t existiert, bevor Sie das Skript ausführen. Die Methode schafft den ganzen Pfad, wenn es doesn8217t exist8211 was sehr nett ist (oder nicht so nett wenn du den Pfad tippst.) Am Ende des Skripts solltest du die ReadReg-Funktion lesen, die den Wert wieder liest und den Wert schreibt, der gelesen wird Sollte Erfolg sein. Also, schau dir den Code an. 8216HKEYCURRENTUSER HKCU 8216HKEYLOCALMACHINE HKLM 8216HKEYCLASSESROOT HKCR 8216HKEYUSERS HKEYUSERS 8216HKEYCURRENTCONFIG HKEYCURRENTCONFIG Temp WriteReg (8220HKCUVBSriptAdminTeststring8221,8221Success8221,8221REGSZ8221) Temp READREG (8220HKCUVBSriptAdminTeststring8221) WScript. Echo Temp Funktion WriteReg (RegPath, Wert, RegType) 8216Regtype sollte 8220REGSZ8221 für string, 8220REGDWORD8221 für eine ganze Zahl sein, 8230 82168221REGBINARY8221 für eine binäre oder boolesche und 8220REGEXPANDSZ8221 für einen erweiterbaren String Dim objRegistry, Key Set objRegistry CreateObject (8220Wscript. shell8221) Schlüssel objRegistry. RegWrite (RegPath, Value, RegType) WriteReg Key End Function Funktion ReadReg (RegPath) Dim objRegistry, Key Set ObjRegistry CreateObject (8220Wscript. shell8221) Schlüssel objRegistry. RegRead (RegPath) ReadReg Key End Funktion Wie immer funktioniert dieser Code einwandfrei. Doch manchmal die Formatierung des Blogs bricht den Code, wenn Sie kopieren und fügen Sie es in Ihren Editor. Also, wenn youd gern nicht irgendwelche Syntaxfehler aufgrund der Kopie und Einfügen Probleme8211 Ive zur Verfügung gestellt, um den Code zum Download, plus Beispiel Ausgabedateien aus meinem letzten Tests für Sie. Youll finden Sie den Code und andere Dateien zum Download von meinen Webseiten (Websystemsadministration) File Depot unter der Kategorie ITKE Blog Scripts. Genießen Sie und glücklich Skripting nbsp Kommentar zu diesem PostRegistry Value Types Ein Registry-Wert kann Daten in verschiedenen Formaten speichern. Wenn Sie Daten unter einem Registrierungswert speichern, z. B. durch Aufruf der RegSetValueEx-Funktion, können Sie einen der folgenden Werte angeben, um die Art der gespeicherten Daten anzugeben. Wenn Sie einen Registrierungswert abrufen, verwenden Funktionen wie RegQueryValueEx diese Werte, um den Typ der abgerufenen Daten anzuzeigen. Die folgenden Registrierungswerttypen werden in Winnt. h definiert. String-Werte Wenn Daten den Typ REGSZ, REGMULTISZ oder REGEXPANDSZ haben, ist die Zeichenfolge möglicherweise nicht mit den entsprechenden abschließenden Nullzeichen gespeichert. Wenn Sie also einen String aus der Registry lesen, müssen Sie sicherstellen, dass der String ordnungsgemäß beendet wird, bevor er ihn ansonsten verwendet. Es kann ein Puffer überschrieben werden. (Beachten Sie, dass REGMULTISZ-Strings zwei abschließende Nullzeichen haben sollten.) Beim Schreiben eines Strings in die Registry müssen Sie die Länge des Strings angeben, einschließlich des abschließenden Nullzeichens (0). Ein häufiger Fehler besteht darin, die Strlen-Funktion zu verwenden, um die Länge des Strings zu bestimmen, aber um zu vergessen, dass strlen nur die Anzahl der Zeichen in der Zeichenfolge zurückgibt, ohne die abschließende Null. Daher sollte die Länge des Strings wie folgt berechnet werden: strlen (string) 1 Ein REGMULTISZ-String endet mit einem String von Länge 0. Daher ist es nicht möglich, eine nulllange Zeichenfolge in die Sequenz aufzunehmen. Eine leere Sequenz würde wie folgt definiert: 0. Das folgende Beispiel führt eine REGMULTISZ-Zeichenfolge.
No comments:
Post a Comment