auron2k
Goto Top

VBScript I Finden eines Registry Unterschlüssels mit bestimmten Key und Stringwert

Guten Tag,

ich habe folgendes Problem:

Aus dem Registrierungsschlüssel HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall will ich bestimmte Unterschlüssl herausfiltern. Und zwar alle Unterschlüssel die einen Wert Publisher enthalten und dieser gleich einem Stringwert ist, zB "Microsoft".
Ein Script zum "Auslesen" habe ich, aber ich kriege es nicht hin nur den Bestimmten Schlüssel auszugeben.

'----------------------------------------------------------------  
'Extract all registry data for the specified key and its subkeys.  
'----------------------------------------------------------------  
Const sKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall"  
Const HKCR=&H80000000, HKCU=&H80000001, HKLM=&H80000002, HKUS=&H80000003
Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7

Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")  

oReg.EnumKey HKLM, sKeyPath, aEntryNames
If Not IsNull(aEntryNames) Then
	For i = 0 To UBound(aEntryNames)
	GetValues sKeyPath & "\" & aEntryNames(i)  
	Next
End If
WScript.Quit

'-----------------------------------  
'Process the current key recursively  
'-----------------------------------  
Sub GetValues (sPath)
Dim aNames, i

oReg.EnumValues HKLM, sPath, aD_Names, aValueTypes   'Get the data  
If Not IsNull(aD_Names) Then
	For i = o To UBound(aD_Names)
	DisplayData sPath, aD_Names(i), aValueTypes(i)
	Next
End If

oReg.EnumKey HKLM, sPath, aK_Names      'Get the subkeys  
If Not IsNull(aK_Names) Then
	For i = 0 To UBound(aK_Names)
	GetValues sPath & "\" & aK_Names(i)   '  
	Next
End If
End Sub


'----------------------------------------  
'Display the data for the specified value  
'----------------------------------------  
Sub DisplayData(sPath, sName, iType)
WScript.Echo "Name: " & sName  
	Select Case iType
		Case REG_SZ
		oReg.GetStringValue HKLM, sPath, sName,sValue
		WScript.Echo "String=" & sValue  
		Case REG_EXPAND_SZ
		oReg.GetExpandedStringValue HKLM, sPath, sName, esValue
		WScript.Echo "Expanded String=" & esValue  
		Case REG_BINARY
		oReg.GetBinaryValue HKLM, sPath, sName,aValues
		Line = ""  
			For Each byteValue In aValues
			Line = Line & byteValue
			Next
		WScript.Echo "Binary=" & Line  
		Case REG_DWORD
		oReg.GetDWORDValue HKLM, sPath, sName,dwValue
		WScript.Echo "DWORD=" & dwValue  
		Case REG_MULTI_SZ
		oReg.GetMultiStringValue HKLM, sPath, sName, aValues
		Line = ""  
			For Each sValue In aValues
			Line = Line & sValue & vbLf
			Next
		WScript.Echo "Multi String=" & Line  
	End Select
End Sub


Kann mir da jemand weiterhelfen?

Content-ID: 138533

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

Auron2k
Auron2k 18.03.2010 um 17:01:10 Uhr
Goto Top
Habe das Problem gelöst, falls es jemanden Interessiert, hier das Script:

Const HKEY_LOCAL_MACHINE = &H80000002

Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")   

Dim arrSubKeys()
 
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall"  
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

On Error Resume Next

	For Each subkey In arrSubKeys
	   
	    strSubKey = "Software\Microsoft\Windows\CurrentVersion\Uninstall\" & subkey  
		
		Set oShell = WScript.CreateObject("WScript.Shell")  
	
		test = oShell.RegRead("HKLM\" & strSubKey & "\wertnachdemgesuchtwird")  
		
		If (test = "valuedeswertes) = TRUE Then  
			subkey1 = subkey
			Else
			End If
	Next
	
//Deine Aktionen//

Loop