hola a todo , quisiera saber Como saber si tengo un programa instalado .
ejemplo hay un programa llamado: Cleo el cuel posee muchas versiones pero todas al principio tienen la palabra CLEO.
EJEMPLO :
Cleo 1.0 / Cleo 2.3 / Cleo 3.2.5 / Cleo 4.0 . en fin .
lo que quiero es que al presionar un boton el programa busque mis aplicación instaladas las que empiezan por CLEO Y si encuentra alguna que me coloque su nombre en un label así sabre cual versión es .
eso se podra? Gracias de antemano . ;D
Cita de: **Aincrad** en 1 Febrero 2018, 22:31 PM
eso se podra?
Por supuesto, se puede, pero no hay una varita mágica o forma guiada para averiguar si "X" programa está instalado. Las entradas que hacen referencia a los programas instalados (aquellos que disponen de un desinstalador) se almacenan (unicamente) en el registro de Windows. Debes buscar en las siguientes claves de registro:
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
- HKEY_CURRENT_USER\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
- HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
El valor que te interesa analizar se llama '
DisplayNane'. Te muestro una imagen de ejemplo del registro de programas instalados:
(http://i.imgur.com/bHeMlXel.png) (https://i.imgur.com/bHeMlXe.png)
( Hacer click en la imagen para ver en tamaño real. )
Para leer el registro de Windows puedes utilizar los miembros del espacio de nombres '
Microsoft.Win32': clase '
Registry', '
RegistryHive', '
RegistryKey', etcétera... encontrarás miles de ejemplos en Google. Al utilizar las clases del registro, recuerda especificar el visor de registro adecuado en caso de 64-Bits para leer las claves de registro de 32 o 64-bits (si no sabes a lo que me refiero, entonces debes documentarte sobre la clave
WOW6432Node antes de ponerte a manipular el registro), de lo contrario irás dando palos de ciego...
Y para comparar los caracteres iniciales de un string, puedes utilizar la función '
String.StartsWith()'.
Saludos.
Bueno , tienes razón tango que usar el registro .
Bueno logre listar todos los programas instalados :
Imports Microsoft.Win32
Public Class Form1
Dim regkey As String = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
listar()
End Sub
Private Sub listar()
ListBox2.Items.Clear()
Dim contador As Integer = 0
Using key As RegistryKey = Registry.LocalMachine.OpenSubKey(regkey)
Dim query = From a In key.GetSubKeyNames()
Let r = key.OpenSubKey(a) _
Select New With _
{
.Application = r.GetValue("DisplayName")
}
For Each item In query
If item.Application IsNot Nothing Then
ListBox2.Items.Add(item.Application)
End If
contador += 1
Next
End Using
Label2.Text = contador & " Aplicaciones instaladas "
End Sub
End Class
ahora como puedo buscar en ese ListBox la linea que tanga la Palabra CLEO Y mostrar esa lienea completa en un label ?.
Gracias de Antemano . ;D
bueno ya lo hice de la siguiente manera :
Private Sub FindMyString(ByVal searchString As String)
If searchString <> String.Empty Then
Dim index As Integer = ListBox2.FindString(searchString)
If index <> -1 Then
ListBox2.SetSelected(index, True)
Label2.Text = index
Label2.Text = "Detectado " & ListBox2.SelectedItem
Label2.ForeColor = Color.Red
Else
Label2.Text = "No Detectado "
Label2.ForeColor = Color.Green
End If
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
FindMyString("Cleo")
End Sub
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. Cita de: **Aincrad** en 2 Febrero 2018, 14:08 PM
ahora como puedo buscar en ese ListBox la linea que tanga la Palabra CLEO
Igual que en el código que has mostrado, puedes usar LINQ con la propiedad
ListBox.Items. O bien puedes usar la función
ListBox.FindString() para buscar un string que empiece por los caracteres especificados, y devolver el índice del elemento.
Cita de: **Aincrad** en 2 Febrero 2018, 14:08 PM
Y mostrar esa lienea completa en un label ?.
Resolviendo lo primero, resolverás esto otro (con LINQ devolviendo el string, o de otras formas obteniendo el índice del elemento).
Saludos!
Gracias por tu ayuda @Elektro , ni no me hubieras dicho lo del registro nunca hubiera podido hacerlo . ;D ;-) ;-)