Ich versuche per For-Schleife Infos aller Installierte Programme unter folgender registrypfad: "Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" in eine listview aufzulisten.
Ich weiß es geht alles viel einfacher ohne diese unnötigen umwege, aber ich kann leider aufgrund meines Projektes keine einfache methoden verwenden. Am ende darf ich nix anderes als Strings in die listview adden. Keine String Array, list of string oder sonstiges, nur String weshalb ich auch String.Builder benutze.
Hier ist mein Fortschritt:
Ich habe die "Application:DoEvents()" hinzugefügt damit es nicht crasht und man nachverfolgen kann wo es stecken bleibt.
In dem Fall ist es in einer Unendlichschleife drin & fügt die items auch nicht korrekt hinzu. Wenn man nur eine For-Schleife ausführt funktionierts perfekt, nur macht es probleme bei mehreren gleichzeitig...
Ich schaff es nicht die Fehler zu beheben
Hoffe mir kann jmnd helfen, danke.
Ich weiß es geht alles viel einfacher ohne diese unnötigen umwege, aber ich kann leider aufgrund meines Projektes keine einfache methoden verwenden. Am ende darf ich nix anderes als Strings in die listview adden. Keine String Array, list of string oder sonstiges, nur String weshalb ich auch String.Builder benutze.
Hier ist mein Fortschritt:
VB.NET-Quellcode
- Public NameCount As Integer
- Public PublisherCount As Integer
- Public InstallCount As Integer
- Public VersionCount As Integer
- Public UninstallCount As Integer
- Function GetSoftwareNames()
- Dim DestKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
- Dim iList As New List(Of String)
- For Each App As String In Registry.LocalMachine.OpenSubKey(DestKey).GetSubKeyNames
- iList.Add(Registry.LocalMachine.OpenSubKey(DestKey & App & "\").GetValue("DisplayName"))
- NameCount = iList.Count
- Next
- Return iList
- End Function
- Function GetSoftwarePublisher()
- Dim DestKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
- Dim iList As New List(Of String)
- For Each App As String In Registry.LocalMachine.OpenSubKey(DestKey).GetSubKeyNames
- iList.Add(Registry.LocalMachine.OpenSubKey(DestKey & App & "\").GetValue("Publisher"))
- PublisherCount = iList.Count
- Next
- Return iList
- End Function
- Function GetSoftwareInstall()
- Dim DestKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
- Dim iList As New List(Of String)
- For Each App As String In Registry.LocalMachine.OpenSubKey(DestKey).GetSubKeyNames
- iList.Add(Registry.LocalMachine.OpenSubKey(DestKey & App & "\").GetValue("InstallDate"))
- InstallCount = iList.Count
- Next
- Return iList
- End Function
- Function GetSoftwareVersion()
- Dim DestKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
- Dim iList As New List(Of String)
- For Each App As String In Registry.LocalMachine.OpenSubKey(DestKey).GetSubKeyNames
- iList.Add(Registry.LocalMachine.OpenSubKey(DestKey & App & "\").GetValue("DisplayVersion"))
- VersionCount = iList.Count
- Next
- Return iList
- End Function
- Function GetSoftwareUninstall()
- Dim DestKey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
- Dim iList As New List(Of String)
- For Each App As String In Registry.LocalMachine.OpenSubKey(DestKey).GetSubKeyNames
- iList.Add(Registry.LocalMachine.OpenSubKey(DestKey & App & "\").GetValue("UninstallString"))
- UninstallCount = iList.Count
- Next
- Return iList
- End Function
- Private Sub reload()
- Dim NameVals As List(Of String) = GetSoftwareNames()
- Dim PublisherVals As List(Of String) = GetSoftwarePublisher()
- Dim InstallVals As List(Of String) = GetSoftwareInstall()
- Dim VersionVals As List(Of String) = GetSoftwareVersion()
- Dim UninstallVals As List(Of String) = GetSoftwareUninstall()
- Dim BuilderName As StringBuilder = New StringBuilder()
- Dim BuilderPublisher As StringBuilder = New StringBuilder()
- Dim BuilderInstall As StringBuilder = New StringBuilder()
- Dim BuilderVersion As StringBuilder = New StringBuilder()
- Dim BuilderUninstall As StringBuilder = New StringBuilder()
- For Each ValName As String In NameVals
- BuilderName.Append(ValName).Append("<")
- Next
- For Each ValPublisher As String In PublisherVals
- BuilderPublisher.Append(ValPublisher).Append("<")
- Next
- For Each ValInstall As String In InstallVals
- BuilderInstall.Append(ValInstall).Append("<")
- Next
- For Each ValVersion As String In VersionVals
- BuilderVersion.Append(ValVersion).Append("<")
- Next
- For Each ValUninstall As String In UninstallVals
- BuilderUninstall.Append(ValUninstall).Append("<")
- Next
- Dim SoftwareName = BuilderName.ToString()
- Dim SoftwarePublisher = BuilderPublisher.ToString()
- Dim SoftwareInstall = BuilderInstall.ToString()
- Dim SoftwareVersion = BuilderVersion.ToString()
- Dim SoftwareUninstall = BuilderUninstall.ToString()
- Dim xName As String() = SoftwareName.Split("<")
- Dim xPublisher As String() = SoftwarePublisher.Split("<")
- Dim xInstall As String() = SoftwareInstall.Split("<")
- Dim xVersion As String() = SoftwareVersion.Split("<")
- Dim xUninstall As String() = SoftwareUninstall.Split("<")
- For i As Integer = 0 To NameCount - 1
- For ip As Integer = 0 To PublisherCount - 1
- For iI As Integer = 0 To InstallCount - 1
- For iV As Integer = 0 To VersionCount - 1
- For iU As Integer = 0 To UninstallCount - 1
- With ListView1.Items.Add(xName(i))
- Application.DoEvents()
- .SubItems.Add(xPublisher(ip))
- Application.DoEvents()
- .SubItems.Add(xInstall(iI))
- Application.DoEvents()
- .SubItems.Add(xVersion(iV))
- Application.DoEvents()
- .SubItems.Add(xUninstall(iU))
- End With
- Next
- Next
- Next
- Next
- Next
- End Sub
Ich habe die "Application:DoEvents()" hinzugefügt damit es nicht crasht und man nachverfolgen kann wo es stecken bleibt.
In dem Fall ist es in einer Unendlichschleife drin & fügt die items auch nicht korrekt hinzu. Wenn man nur eine For-Schleife ausführt funktionierts perfekt, nur macht es probleme bei mehreren gleichzeitig...
Ich schaff es nicht die Fehler zu beheben
Hoffe mir kann jmnd helfen, danke.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SEX“ ()