Descrizione :
Una tecnica valida per ricavare dal registro di sistema informazioni su programmi e aggiornamenti installati.
+ Articolo :
L'esempio utilizza una Function e una Structure. La Structure rappresenta la singola entità "Programma" presente nel sistema.
Inoltre è utile anche come esempio di caricamento diretto di oggetti non-string in una ComboBox, e successiva estrazione dell'oggetto selezionato dall'utente.
In questo caso vengono gestite 3 voci :
- DisplayName ( necessario )
- InstallDate
- UninstallString
1. Una ComboBox in VB.NET non può solo contenere stringhe, ma molto di più ( e qui dovrei bacchettarmi le mani da solo, perchè in .NET la Stringa è un oggetto... ). Ma era per rendere l'idea...
2. La Structure, Public in un Modulo :
Public Structure programma Public DisplayName As String Public InstallDate As String Public UninstallString As String Public Overrides Function ToString() As String Return Me.DisplayName End Function End Structure
L'Override del Metodo ToString() assicura che, nel caso io vada a caricare direttamente un'istanza di questa Structure, ad esempio nella nostra ComboBox, la rappresentazione Stringa dell'Oggetto, di default sia, in questo caso, la Proprietà DisplayName.
3. La Function, Public in un Modulo, restituisce una List() di Structure :
Public Function ProgrammiInstallati() As List(Of programma)
Dim L As New List(Of programma)
Dim regPath As String = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
Dim regKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey(regPath)
Dim regSubKeys() As String = regKey.GetSubKeyNames
Dim regSubKey As Microsoft.Win32.RegistryKey
Dim displayName As String
Dim CI As New System.Globalization.CultureInfo("en-US")
Dim installDate As String
Dim uninstallString As String
Dim P As programma
For Each rsk As String In regSubKeys
P = New programma
regSubKey = regKey.OpenSubKey(rsk)
displayName = regSubKey.GetValue("DisplayName", "N.D.")
P.DisplayName = displayName
installDate = regSubKey.GetValue("InstallDate")
If installDate Is Nothing Then
installDate = "N.D."
Else
Try
installDate = DateTime.ParseExact(installDate, "yyyyMMdd", CI).ToString("dd/MM/yyyy")
Catch ex As Exception
End Try
End If
P.InstallDate = installDate
uninstallString = regSubKey.GetValue("UninstallString", "N.D.")
P.UninstallString = uninstallString
L.Add(P)
Next
Return L
End Function4. Carico la ComboBox :
For Each P As programma In ProgrammiInstallati() ComboBox1.Items.Add(P) Next
5. Selezione su ComboBox :
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged Dim installDate As String = DirectCast(ComboBox1.SelectedItem, programma).InstallDate Dim uninstallString As String = DirectCast(ComboBox1.SelectedItem, programma).UninstallString MessageBox.Show(installDate & " --- " & uninstallString) End Sub
+ Fine Articolo.



14:11
MarcoGG

Posted in:
0 commenti:
Posta un commento