Hola a todos. Soy nuevo en el uso de visual.net en general.
Estoy haciendo una aplicación para obtener el listado de hardware de los equipos de una empresa usando el wmi. El problema es que dependiendo del windows (si es 7, 8 o xp) algunas propiedades pueden o no existir. Según yo ya había previsto esto, pero sigue fallando. Un ejemplo de mi código es este:
Código vb:
Ver originalTry
Dim searcher As New ManagementObjectSearcher(
"SELECT * FROM Win32_OperatingSystem")
For Each queryObj As ManagementObject In searcher.Get()
If queryObj("CsName") IsNot Nothing Then
lista+= " ""CSName"": """ + queryObj("CSName") + " "", "
Else
lista += " ""CsName"": ""N/A"", "
Next
Catch err As ManagementException
MessageBox.Show("Error al consultar propiedad WMI OS: " & err.Message)
End Try
Yo asumía que al no tener la propiedad (IsNot Nothing) regresaba el dato N/A, sin embargo, cuando no existe la propiedad todo el bloque falla, por ejemplo al consultar en xp
Código vb:
Ver originalIf queryObj("OSArchitecture") IsNot Nothing Then
lista += " ""OSArchitecture"": """ + queryObj("OSArchitecture") + " "", "
Else
lista += " ""OSArchitecture"": ""N/A"", "
End If
¿De qué forma podría hacerlo, o no debo usar el try catch?
Nota: estoy consultando por algunas propiedades en concreto, para no transmitir toda la lista de propiedades completa.