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 original
Try 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 original
If 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.