Pues una vez más bastante ocupado en mi trabajo, cada vez con una fila de pendientes más grande, tanto que ni siquiera puedo dedicar unos minutos a atender este blog (suspiro), así aprovechando un ratito comparto algunos trucos esperando les sean de utilidad.
En esta ocasión quiero mostrar como saber si tenemos Microsoft Office (concretamente el paquete Excel) instalado nuestro Windows usando VB.Net
Para ello vamos a hacer uso del registro de Windows. Buscaremos la llave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office, dentro miraremos una serie de llaves con diferentes números de versiones. Si Office se encuentra instalado una de esas llaves debe contener la subllave "Excel".
Conociendo esto, vamos a implementar una rutina para saber si Microsoft Excel se encuentra instalado (o no) en nuestro equipo y su respectiva versión:
'#### Purpose: Detect office function
'#### Created date: 05/06/2018
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 05/06/2018
'#### Last modified username: Juan Manuel Mar Hdz.
Public Sub DetectOffice()
Dim i As Long, emptyarray(0) As String, subkeys() As String
Dim version As Double, key1 As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine, key2 As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine
Dim secondKey As String, keyok As Boolean
Try
key1 = key1.OpenSubKey("SOFTWARE\Microsoft\Office")
Catch exp As Exception
key1 = Nothing
End Try
If key1 IsNot Nothing Then
Try
subkeys = key1.GetSubKeyNames
Catch exp As Exception
subkeys = emptyarray
End Try
For i=0 To subkeys.Length - 1
globalobj.getAppObject().DoEvents
If subkeys(i).IsNullOrEmpty(subkeys(i)) = False Then
Try
version = Double.Parse(subkeys(i).Trim)
Catch exp As Exception
version = 0
End Try
If version > 0 Then
Try
secondKey = subkeys(i).Trim + "\Excel"
key2 = key1.OpenSubKey(secondKey.Trim)
If key2 IsNot Nothing Then
keyok = True
Else
keyok = False
End If
Catch exp As Exception
keyok = False
End Try
If keyok = True Then
found = True
Exit For
Else
found = False
End If
End If
End If
Next
Else
found = False
version = 0
End If
If found = True Then
MsgBox("Microsoft Office instalado - " + version.ToString().Trim)
Else
MsgBox("Microsoft Office no fue encontrado")
End If
End Sub
Como podemos ver, lo que hacemos es buscar la llave de instalación de Office, analizar todas las versiones instaladas (aunque en realidad no están, supongo que son referencias), cuando encontremos la subllave "Excel" parar la búsqueda y mostrar un aviso si encontramos a Office y su versión.
Procedencia de las imágenes: |
File: Caja de instalación de Microsoft Office URL: https://www.securitynull.net/error-al-instalar-office-2007-en-windows-xp-sp3-archivos-protegidos-fp4autl-dll/ Licencia: Creative Commons |
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
Muy interesante. Hice algo parecido con NSIS y creo que el mecanismo fue muy parecido al que tu propones.
ResponderBorrar