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.
0 commenti:
Posta un commento