Jump to content

Registry auslesen NT4


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

hi!

 

rein zufällig hab ich sowas ähnliches wie du vorhast letzte woche für unsere nt4-maschinen gestrickt. der einzige unterschied ist, dass hier nicht die version eines service-packs sondern die version des installierten internet explorer gecheckt wird. vielleicht hilft dir dieser etwas modifizierte auszug:

 

[...in die Variable PWD wird zunächst auf 'geheime' art das Admin-PW gebeamt, als Parameter (%1) wird die IP des Ziel-Systems angegeben...]

---------

net use \\%1 /user:127.0.0.1\administrator %PWD%

IF %ERRORLEVEL% GTR 0 GOTO :FEHLER

 

set KEY="\\%1\hkey_local_machine\software\microsoft\internet explorer"

for /f "Skip=3 Tokens=2*" %%i in ('reg QUERY %KEY% /v Version') do set IEVER=%%j

IF %ERRORLEVEL% == 0 GOTO :FERTIG

----------

 

der schlüssel hier liegt im FOR-befehl begründet, der o.g. befehl liesst den Wert aus der Value "Version" aus und schreibt ihn in die Variable IEVER. Zum besseren Verständnis hier mal eine ungefilterte Ausgabe des o.g. REG-Befehls:

-----------

! REG.EXE VERSION 2.0

 

HKEY_LOCAL_MACHINE\software\microsoft\internet explorer

Version REG_SZ 6.0.2800.1106

------------

 

Der Parameter SKIP bedeutet, dass 3 Zeilen des Outputs von reg query übergangen werden. Damit befinden wir uns nun in der 4. Zeile, in der Version angezeigt wird. Der Tokens-Parameter definiert, dass 2 Werte (die durch Spaces getrannt sind -> *) übergangen werden. Bleibt also die reine Versions-Angabe übrig.

 

Wenn du das nach deinen Bedürfnissen anpasst solltest du keine Mühen haben, das Ergebnis entweder in ein Gesamt-Log zur späteren Auswertung und weiterverarbeitung zu schreiben oder halt das Ergebnis direkt zu prüfen und entsprechende Aktion starten (oder auch nicht ;) )...

 

Aber Achtung! Eine Sache fällt mir noch ein: ich bin bei mir so vorgegangen, dass ich mithilfe des Echo-Befehls entsprechende Datensätze im CSV-Format in ein Gesamt-Log geschrieben habe. Das Batch lief dabei innerhalb einer Perl-Schleife auf einem W2K-Server, die alle PCs nacheinander aus einer entsprechenden Liste abgearbeitet hat. Die Werte der ausgelesenen Versionen hatten aber ALLE GENAU 8 Leerzeichen am Ende (also rechts) angefügt. Du solltest vorher prüfen, ob das bei dir auch so ist...

 

 

hmmm, ansonsten ist mir gerade noch eingefallen, dass es ja noch den befehl REG COMPARE gibt, vielleicht kannst du damit auch was anfangen...

Link zu diesem Kommentar

Hey, erstmal vielen Dank für die Hilfen :)

 

Lupo, dass mit dem IEPatch musste ich auch machen, da war es relativ einfach, da ich ne eindeutige Datei im System finden konnte und darauf aufbauen konnte.

 

Aber nu muss ich es mit RegKeys machen.... ich habe mir Dein Script genau angeschaut..... hab da aber grad nen Problem mit meinen 1 - Zeiler *g*

 

@echo off

 

 

if reg query "hklm\software\microsoft\windows nt\currentversion\csdversion" /s == "Service Pack 6" >reg.txt

 

 

 

exit

 

leider funzt dass so net *g* ich würde gerne den Key CSDVersion abfragen und wenn der = Service Pack 6 ist, soll er mit die DAtei reg.txt ins root eintragen....

 

geb ich den Befehl:

 

reg query "hklm\software\microsoft\windows nt\currentversion" /s

 

so an, bekomme ich als Ergebnis nämlich genau dass was ich brauche, nur muss ich dass jetzt irgendwie weiterverarbeiten können und da häng ich jetzt grad....

 

Bin für jede Hilfe Dankbar. :)

 

Cu Reyeg :)

Link zu diesem Kommentar

also, damit deine abfrage funktioniert musste ich das GENAUSO eingeben wie in diesem Auszug:

----------

P:\>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion

 

! REG.EXE VERSION 2.0

 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

CSDVersion REG_SZ Service Pack 4

----------

 

wenn man nur mit hklm arbeitet und alles kleinschreibt geht das nicht. Um die gewünschte Value anzeigen zu lassen musst du mit dem Parameter /v arbeiten und dann den Valuenamen angeben.

Rausfiltern kann man den Output ganz gut mit dem FOR-Befehl, wie oben schon beschrieben. Das mit der IF-Abfrage wie du es geschrieben hast wird nicht funktionieren. Erstmal von Grundsatz der IF-Funktionalität her und anderseits weil du mehr Output bekommst, als du damit ohne weiteres abfragen kannst. Allein schon weil das über mehrere Zeilen bekommst.

 

man kann das bspw. so umsetzen:

---

set KEY="\\%1\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"

for /f "Skip=3 Tokens=2*" %%i in ('reg QUERY %KEY% /v CSDVersion') do set SPVER=%%j

---

 

In SPVER steht anschliessend die SP-Version. Bei mir funzt das so jedenfalls...

 

Was man natürlich auch noch machen kann ist, den reg query-Befehl in der FOR-Klammer noch mit einem Find-Befehl kaskadieren, so dass man nur dann einen Wert zurückwerhält, wenn er den Kriterien im Find-Befehl entspricht. Dazu muss man mit der Pipe arbeiten, dieser aber ein ^ voranstellen, damit nicht fälschlicherweise der FOR-Befehl an einer sehr unvorteilhaften stelle kaskadiert wird....sieht dann irgendwie so aus: ('reg QUERY %KEY% /v CSDVersion^|find "Service Pack 6a"') dafür muss allerdings noch der FOR-Befehl angepasst werden, weil der Output dann etwas anders aussieht. Da mein Verständnis für den FOR-Befehl aber offenbar doch nicht so toll ist wie ich die letzten Tage gemerkt habe lass ich das an dieser Stelle besser... ;)

 

Wenn du unbedingt die Versionsnummer in eine Datei schreiben willst kannst du natürlich noch den SET SPVER-Befehl am Ende der FOR-Zeile durch ein ECHO %%J>reg.txt ersetzen.

 

nochwas? mir fällt ersma nix mehr ein

Link zu diesem Kommentar

SO, ich hab mein Prob. endlich gelöst und wollre hier nocheinmal DANKE sagen, für die tolle Hilfe, insbesondere von Lupo :)

 

Ich habe es jetzt "etwas" anders gemacht:

 

- Batchdatei erstellt die die Registry ausließt und dass Ergebnis in eine Datei: reg.ini schreibt, die auf c:\ abgelegt wird.

 

- Per Netinstall - Projekt, gucken ob die Datei auf c:\ existiert und schauen ob da der gesuchte Key-Inhalt drin steht.

 

- Netinst. Projekt ausführen.

 

Wenn es Euch weiter im Detail interessiert, schreibe ich es Euch gerne.

 

Cu und Danke

Reyeg :)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...