lunedì 31 ottobre 2011

[VB.NET] Informazioni su Programmi Installati

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 Function

4. 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.

Un Click su "Mi Piace" è il modo migliore per ringraziare l'autore di questo articolo.



0 commenti:

Posta un commento

Favorites Twitter Facebook Delicious Digg Stumbleupon More

 
Design by Free WordPress Themes Modificato da MarcoGG