Registrierung durchsuchen mit VB.NET
Hallo alle zusammen,
habe ein VBScript das ich in VB.Net(VBExpress2010) nutzen will.
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Const BASE = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
machine = "." ' use "." for local computer
swList = InstalledApplications(machine)
CreateObject("Wscript.Shell").Popup swList,10,"Installierte Software"
Function InstalledApplications(nod)
Dim tmp, Val
Set oReg = GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" _
& nod & "/root/default:StdRegProv")
If oReg.EnumKey(HKLM, BASE, Keys)<> 0 Then
InstalledApplications = "Fehler beim Zugriff auf Uninstall-Key!"
Exit Function
End If
For Each Key in Keys
rc = oReg.GetStringValue( _
HKLM, BASE & Key, "DisplayName", val)
If rc <> 0 Then oReg.GetStringValue _
HKLM, BASE & Key, "QuietDisplayName", val
If Val <> "" Then tmp = tmp & val & vbCrLf
Next
InstalledApplications = tmp
End Function
Anpassungsversuch in VB.NET(VB2010 Express)
Function installierte_Software(ByVal StrServer)
installierte_Software = 0
Dim Maschine
Maschine = "."
Dim RC
Const BASE = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Dim tmp, Val
tmp = 0
Val = 0
Dim oReg
oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & StrServer & "/root/default:StdRegProv")
If oReg.EnumKey(HKLM, BASE, werte) <> 0 Then
MsgBox("Fehler beim Zugriff auf Uninstall-Key!")
Exit Function
End If
For Each Key In werte
TEXT = oReg.GetStringValue(HKLM, BASE & Key, "QuietDisplayName", Val)
RC = oReg.GetStringValue(HKLM, werte, "DisplayName", Val)
If RC <> 0 Then oReg.GetStringValue(HKLM, BASE & Key, "QuietDisplayName", Val) '<<<<<<<<<Hier bleibt das Programm hängen mit dem Hinweis "Falscher Typ"
If Val <> "" Then tmp = tmp & Val & vbCrLf
Next
MsgBox(tmp)
End Function
Bin einfach noch nicht so fit in VB.Net. Weiß nicht welchen Typ er will. Einen Array?
Gruß
Ralf
habe ein VBScript das ich in VB.Net(VBExpress2010) nutzen will.
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Const BASE = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
machine = "." ' use "." for local computer
swList = InstalledApplications(machine)
CreateObject("Wscript.Shell").Popup swList,10,"Installierte Software"
Function InstalledApplications(nod)
Dim tmp, Val
Set oReg = GetObject( _
"winmgmts:{impersonationLevel=impersonate}!\\" _
& nod & "/root/default:StdRegProv")
If oReg.EnumKey(HKLM, BASE, Keys)<> 0 Then
InstalledApplications = "Fehler beim Zugriff auf Uninstall-Key!"
Exit Function
End If
For Each Key in Keys
rc = oReg.GetStringValue( _
HKLM, BASE & Key, "DisplayName", val)
If rc <> 0 Then oReg.GetStringValue _
HKLM, BASE & Key, "QuietDisplayName", val
If Val <> "" Then tmp = tmp & val & vbCrLf
Next
InstalledApplications = tmp
End Function
Anpassungsversuch in VB.NET(VB2010 Express)
Function installierte_Software(ByVal StrServer)
installierte_Software = 0
Dim Maschine
Maschine = "."
Dim RC
Const BASE = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
Dim tmp, Val
tmp = 0
Val = 0
Dim oReg
oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & StrServer & "/root/default:StdRegProv")
If oReg.EnumKey(HKLM, BASE, werte) <> 0 Then
MsgBox("Fehler beim Zugriff auf Uninstall-Key!")
Exit Function
End If
For Each Key In werte
TEXT = oReg.GetStringValue(HKLM, BASE & Key, "QuietDisplayName", Val)
RC = oReg.GetStringValue(HKLM, werte, "DisplayName", Val)
If RC <> 0 Then oReg.GetStringValue(HKLM, BASE & Key, "QuietDisplayName", Val) '<<<<<<<<<Hier bleibt das Programm hängen mit dem Hinweis "Falscher Typ"
If Val <> "" Then tmp = tmp & Val & vbCrLf
Next
MsgBox(tmp)
End Function
Bin einfach noch nicht so fit in VB.Net. Weiß nicht welchen Typ er will. Einen Array?
Gruß
Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160387
Url: https://administrator.de/contentid/160387
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo runner-ralf!
Da VB.NET eigene Objekte / Methoden für den Registry-Zugriff hat, eher so:
Grüße
bastla
P.S.: Bei mir sieht's mit "
Da VB.NET eigene Objekte / Methoden für den Registry-Zugriff hat, eher so:
Const BASE = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Dim DispName As String, Val As String
Dim tmp As String = ""
Dim Key As Microsoft.Win32.RegistryKey
Key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(BASE)
Dim SubKeyNames() As String
SubKeyNames = Key.GetSubKeyNames()
For Each SubKeyName In SubKeyNames
Key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(BASE & "\" & SubKeyName)
DispName = Key.GetValue("DisplayName")
'If DispName <> "" Then Val = Key.GetValue("QuietDisplayName")
If DispName <> "" Then tmp = tmp & DispName & vbTab
Next
MsgBox(tmp)
bastla
P.S.: Bei mir sieht's mit "
vbTab
" lustiger aus als mit "vbCrLf
" ...