Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Otra característica que facilita el uso del instrumental de administración a los programadores de aplicaciones es la capacidad de usar objetos con establecimiento inflexible de tipos. Para satisfacer las necesidades de extensión de los clientes, los objetos WMI se suelen enlazar en tiempo de ejecución, lo que no fuerza el establecimiento inflexible de los tipos. En el entorno .NET Framework, WMI permite generar automáticamente contenedores enlazados en tiempo de compilación para objetos WMI. Gracias a ello, las aplicaciones pueden usar estos contenedores en el código y así aprovechar todas las funciones de asistencia de Microsoft Visual Studio disponibles para los objetos con establecimiento inflexible de tipos (como el motor Intellisense y la exploración de objetos). Para generar un contenedor con establecimiento inflexible de tipos se puede emplear alguno de estos métodos:
Usar la utilidad MgmtClassGen.exe incluida en.NET Framework SDK.
Para obtener más información, vea Generador de clases con establecimiento inflexible de tipos para administración (mgmtclassgen.exe).
Usar la extensión Server Explorer Management de Visual Studio .NET que genera automáticamente el contenedor al arrastrar una clase de administración al diseñador.
Mediante programación con los métodos System.Management.ManagementClass.GetStronglyTypedClassCode().
Los contenedores se implementan como clases de código administrado y, como tales, proporcionan compatibilidad con varios lenguajes para poder utilizarlos con cualquier lenguaje de programación.
El ejemplo siguiente se basa en el ejemplo del tema Acceso a la información de administración con System.Management pero incluye la clase con establecimiento inflexible de tipos Service. Debe generar esta clase, antes de ejecutar este ejemplo:
C:> managementclassgen Win32_Service /L cs
(o utilice /L vb para proyectos Visual Basic)
El resultado del generador será el archivo de código .cs del servicio, que se debe agregar a continuación al proyecto junto con el código de debajo.
Observe el uso de esta clase en la instrucción foreach en vez de la clase genérica ManagementObject y el uso de la notación estándar simplificada que emplea puntos para tener acceso a las propiedades de los objetos devueltos:
using System;
using ROOT.CIMV2.Win32;
// Contains the strongly-typed generated class "Service"
// in ROOT.CIMV2.Win32 namespace
class Sample {
// Enumerate instances of Win32_Service class
void EnumerateServices() {
Console.WriteLine("List services and their state");
foreach(Service ser in Service.GetInstances())
Console.WriteLine(
"Service: "+ ser.Name + " is " + ser.State);
}
public static void Main(string[] args) {
Sample test = new Sample();
test.EnumerateServices();
return;
}
}
[Visual Basic]
Imports System
Imports Microsoft.CIMv2.Win32
Public Function EnumerateServices
Console.WriteLine("List services and their state");
'Request the collection of services
Dim searcher As New ManagementObjectSearcher("Win32_Service")
' Enumerate through the collection
Dim serv As Service
For Each serv In searcher.Get()
Console.WriteLine("Variable : {0}, Value = {1}", _
serv.Name, serv.VariableValue)
Next serv
End Function
Vea también
Acceso a la información de administración con System.Management | Recuperar colecciones de objetos de administración | Consultar información de administración | Suscribir y consumir eventos | Ejecutar métodos en objetos de administración | Interacción remota y opciones de conexión