gdnmarc
Goto Top

VBScript zum Auslesen eines bestimmten Registry Schlüssels

Hallo liebe Administratoren-Kollegen,

ich brauche mal Eure kreative Unterstützung.

Ich benötige ein Script, welches in der Lage ist bestimmte Registry Schlüssel auszulesen, zu vervollständigen und den höchsten Eintrag zurückzugeben.

Dafür habe ich aber nur einen Teil des Schlüssels als Vorgabewert zur Verfügung: Z.B. den Teil B-VR0000004 des gesamten Schlüssels B-VR0000004-0004-C0002

Ich möchte also den Namen des gesamten Schlüssel zurückgeben bekommen. Es kann sein, dass es mehrere Schlüssel mit diesem Anfangsteil gibt, z.B.

B-VR0000004-0004-C0002
B-VR0000004-0004-C0003

Der erste Teil B-VR0000004 kennzeichnet dabei eine Applikation, der zweite (0004) den Kunden und das letzte Segment (C0002) die einzelnen Updates der App. D.h. hier liegt die Appliaktion in zwei verschienenen Versionsständen auf dem Rechner vor.

In diesem Fall benötige ich den Schlüssel mit dem höchsten Wert am Ende also C0003, bzw. den vollständigen Namen B-VR0000004-0004-C0003.

Die Schlüssel liegen alle unterhalb des Schlüssels HKEY_LOCAL_MACHINE\SOFTWARE\Administrator-Forum\Software\

Also z.B. sowas

[HKEY_LOCAL_MACHINE\SOFTWARE\Administrator-Forum\Software\B-VR0000004-0004-C0002\]
[HKEY_LOCAL_MACHINE\SOFTWARE\Administrator-Forum\Software\B-VR0000004-0004-C0003\]
[HKEY_LOCAL_MACHINE\SOFTWARE\Administrator-Forum\Software\B-VR0000005-0004-C0001\]
[HKEY_LOCAL_MACHINE\SOFTWARE\Administrator-Forum\Software\B-VR0000006-0004-C0001\]
[HKEY_LOCAL_MACHINE\SOFTWARE\Administrator-Forum\Software\B-VR0000006-0004-C0002\]


Könnt ihr mir hier etwas weiterhelfen? Vielleichtr habt ihr Teile davon, schon in ähnlich Scripten verwendet. Wäre ganz toll, was von Euch zu hören!!!

Viele Grüße!!!!

Content-Key: 94314

Url: https://administrator.de/contentid/94314

Printed on: April 24, 2024 at 19:04 o'clock

Member: bastla
bastla Aug 13, 2008 at 10:42:31 (UTC)
Goto Top
Hallo gdnmarc!

Vielleicht solltest Du noch klarstellen, welche Eingabe (zB "B-VR0000004-0004", oder auch nur "B-VR0000004") welche Ausgabe (nur "B-VR0000004-0004-C0003" oder "B-VR0000004-0004-C0003" + "B-VR0000004-0007-C0002" + "B-VR0000004-0011-C0003" + ...) erzeugen soll, bzw ob der Aufbau der Schlüsselnamen immer gleich (insbes hinsichtlich der Stellenanzahl) ist.

Grüße
bastla
Member: gdnmarc
gdnmarc Aug 13, 2008 at 11:27:47 (UTC)
Goto Top
hi bastla,

auf dich habe ich gehofft!!!!! VIELEN DANK!!!

die eingabe ist VR0000004-0004 und die Ausgabe soll dann der komplette Schlüssel sein, und zwar mit dem höchsten Endwert/Update.

Also: B-VR0000004-0004-C0003

Der Aufbau ist immer gleich, die Anzahl der Ziffern auch.

GLG!!
Member: bastla
bastla Aug 13, 2008 at 11:52:07 (UTC)
Goto Top
Hallo gdnmarc!

Noch eine Frage: Da die Eingabe nur "VR0000004-0004" sein soll: Steht davor immer "B-", oder müssten hier mehrere Varianten berücksichtigt (und getrennt ausgewertet) werden?

Grüße
bastla

P.S.: Danke für die Titulierung als "Hoffnungsträger" ...face-smile
Member: gdnmarc
gdnmarc Aug 13, 2008 at 12:10:37 (UTC)
Goto Top
jeo, das B- ist auch immer gleich face-smile Vielen Dank
Member: bastla
bastla Aug 13, 2008 at 12:20:09 (UTC)
Goto Top
Hallo gdnmarc!

Dann etwa so:
Search = "VR0000004-0004" 'nur zum Testen; ansonsten natürlich Input-Box oder WScript.Arguments()  
strKeyPath = "Software\Administrator-Forum\Software"  

SearchFor = LCase("B-" & Search)  
SearchLen = Len(SearchFor)
MaxVersion = ""  

strComputer = "."  
Const HKLM = &H80000002
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _  
    strComputer & "\root\default:StdRegProv")  
objReg.EnumKey HKLM, strKeyPath, arrEntryNames
For Each Key In arrEntryNames
    If LCase(Left(Key, SearchLen)) = SearchFor Then
        If LCase(Key) > LCase(MaxVersion) Then MaxVersion = Key
    End If
Next
WScript.Echo MaxVersion
Grüße
bastla
Member: gdnmarc
gdnmarc Aug 13, 2008 at 13:16:44 (UTC)
Goto Top
bastla DU bist der Hammer!!!!! VIELEN DANK!!!!! Das funktioniert einfach nur....

eine Frage hätte ich noch face-wink wie kann ich das parametrisieren, so dass ich das Script mit dem Search-Parameter aufrufe.

Also ungefähr so "script.vbs VR0000004-0004"

1000 DANK zu Dir! Großartige Leistung
Member: gdnmarc
gdnmarc Aug 13, 2008 at 13:21:12 (UTC)
Goto Top
P.S. mit welchem Editor scriptest Du eigentlich?
Member: bastla
bastla Aug 13, 2008 at 13:28:12 (UTC)
Goto Top
Hallo gdnmarc!

... wie kann ich das parametrisieren
Wie schon oben angedeutet:
If WScript.Arguments.Count > 0 Then
    Search = WScript.Arguments(0)
Else
    WScript.Echo "Bitte den Suchbegriff als Parameter übergeben!"  
    WScript.Quit(1)
End If
...

mit welchem Editor scriptest Du eigentlich?
Notepad++; PSPad wollte ich mir auch schon länger näher ansehen, bin aber mit NPP eigentlich zufrieden ...

Grüße
bastla

P.S.: Du kannst Deine Beiträge auch editieren ...
Member: gdnmarc
gdnmarc Aug 13, 2008 at 14:51:45 (UTC)
Goto Top
ICH DANKE DIR BASTLA!!!

PERFEKT