Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método PerformanceCounterCategory.InstanceExists (String, String)

 

Publicado: noviembre de 2016

Determina si una categoría especificada en el equipo local contiene la instancia de objeto de rendimiento especificada.

Espacio de nombres:   System.Diagnostics
Ensamblado:  System (en System.dll)

public static bool InstanceExists(
	string instanceName,
	string categoryName
)

Parámetros

instanceName
Type: System.String

La instancia de objeto de rendimiento para buscar.

categoryName
Type: System.String

La categoría de contador de rendimiento para buscar.

Valor devuelto

Type: System.Boolean

true Si la categoría contiene la instancia de objeto de rendimiento especificada; de lo contrario, false.

Exception Condition
ArgumentNullException

El parámetro instanceName es null.

O bien

El parámetro categoryName es null.

ArgumentException

El parámetro categoryName es una cadena vacía ("").

Win32Exception

Error en una llamada a una API del sistema subyacente.

UnauthorizedAccessException

Código que se ejecuta sin privilegios administrativos intentó leer un contador de rendimiento.

No es posible determinar si existe una instancia de objeto de rendimiento en un equipo sin especificar una categoría específica para buscar.

System_CAPS_noteNota

Para leer los contadores de rendimiento en Windows Vista y versiones posteriores, Windows XP Professional x64 Edition o Windows Server 2003, debe ser miembro del grupo usuarios del Monitor de rendimiento o tener privilegios administrativos.

Para evitar tener que elevar sus privilegios para tener acceso a los contadores de rendimiento en Windows Vista y versiones posteriores, agréguese al grupo usuarios del Monitor de rendimiento.

En Windows Vista y versiones posteriores, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que tiene acceso a los contadores de rendimiento, primero debe elevar sus privilegios de usuario estándar a administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.

En el ejemplo de código siguiente se utiliza las sobrecargas estáticas de InstanceExists para determinar si el dado PerformanceCounter instancia existe en el PerformanceCounterCategory. La sobrecarga se selecciona basándose en si se especifica un nombre de equipo. Si no se especifica ningún nombre de instancia, el ejemplo utiliza el nombre de instancia única de forma predeterminada.

public static void Main(string[] args)
{
    string categoryName = "";
    string instanceName = "";
    string machineName = "";
    bool objectExists = false;
    const string SINGLE_INSTANCE_NAME = "systemdiagnosticsperfcounterlibsingleinstance";

    // Copy the supplied arguments into the local variables.
    try
    {
        categoryName = args[0];
        instanceName = args[1];
        machineName = args[2]=="."? "": args[2];
    }
    catch(Exception ex)
    {
        // Ignore the exception from non-supplied arguments.
    }

    // Use the given instance name or use the default single-instance name.
    if (instanceName.Length==0)
    {
        instanceName = SINGLE_INSTANCE_NAME;
    }

    try
    {
        // Check whether the specified instance exists.
        // Use the static forms of the InstanceExists method.
        if (machineName.Length==0)
        {
            objectExists = PerformanceCounterCategory.InstanceExists(instanceName, categoryName);
        }
        else
        {
            objectExists = PerformanceCounterCategory.InstanceExists(instanceName, categoryName, machineName);
        }

    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to check for the existence of " +
            "instance \"{0}\" in category \"{1}\" on " + 
            (machineName.Length>0? "computer \"{2}\":": "this computer:") + "\n" + 
            ex.Message, instanceName, categoryName, machineName);
        return;
    }

    // Tell the user whether the instance exists.
    Console.WriteLine("Instance \"{0}\" " + (objectExists? "exists": "does not exist") + 
        " in category \"{1}\" on " + (machineName.Length>0? "computer \"{2}\".": "this computer."), 
        instanceName, categoryName, machineName);
}

PerformanceCounterPermission

for reading performance counter categories. Associated enumeration: F:System.Diagnostics.PerformanceCounterPermissionAccess.Read.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: