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-ID: 94314

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

Ausgedruckt am: 19.11.2024 um 09:11 Uhr

bastla
bastla 13.08.2008 um 12:42:31 Uhr
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
gdnmarc
gdnmarc 13.08.2008 um 13:27:47 Uhr
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!!
bastla
bastla 13.08.2008 um 13:52:07 Uhr
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
gdnmarc
gdnmarc 13.08.2008 um 14:10:37 Uhr
Goto Top
jeo, das B- ist auch immer gleich face-smile Vielen Dank
bastla
bastla 13.08.2008 um 14:20:09 Uhr
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
gdnmarc
gdnmarc 13.08.2008 um 15:16:44 Uhr
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
gdnmarc
gdnmarc 13.08.2008 um 15:21:12 Uhr
Goto Top
P.S. mit welchem Editor scriptest Du eigentlich?
bastla
bastla 13.08.2008 um 15:28:12 Uhr
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 ...
gdnmarc
gdnmarc 13.08.2008 um 16:51:45 Uhr
Goto Top
ICH DANKE DIR BASTLA!!!

PERFEKT