PerformanceCounterCategory.CounterExists Método

Definição

Determina se um contador específico está registrado em uma determinada categoria.

Sobrecargas

CounterExists(String)

Determina se o contador especificado está registrado para essa categoria, o que é indicado pelas propriedades CategoryName e MachineName.

CounterExists(String, String)

Determina se o contador especificado está registrado para a categoria especificada no computador local.

CounterExists(String, String, String)

Determina se o contador especificado está registrado para a categoria especificada em um computador remoto.

CounterExists(String)

Determina se o contador especificado está registrado para essa categoria, o que é indicado pelas propriedades CategoryName e MachineName.

public:
 bool CounterExists(System::String ^ counterName);
public bool CounterExists (string counterName);
member this.CounterExists : string -> bool
Public Function CounterExists (counterName As String) As Boolean

Parâmetros

counterName
String

O nome do contador de desempenho a procurar.

Retornos

Boolean

true se o contador estiver registrado para a categoria especificada pelas propriedades CategoryName e MachineName; caso contrário, false.

Exceções

O counterName é null.

A propriedade CategoryName não foi definida.

Falha ao chamar uma API do sistema subjacente.

Um código em execução sem privilégios administrativos tentou ler um contador de desempenho.

Exemplos

O exemplo de código a seguir determina se existe um PerformanceCounter . Ele obtém um nome de categoria, nome do contador e nome do computador da linha de comando, se eles forem fornecidos. Ele cria um PerformanceCounterCategory objeto usando o apropriado PerformanceCounterCategory. Em seguida, ele usa o CounterExists(String) método para determinar se o especificado PerformanceCounter existe e informa o usuário.

public static void Main(string[] args)
{
    string categoryName = "";
    string counterName = "";
    string machineName = "";
    bool objectExists = false;
    PerformanceCounterCategory pcc;

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

    try
    {
        if (machineName.Length==0)
        {
            pcc = new PerformanceCounterCategory(categoryName);
        }
        else
        {
            pcc = new PerformanceCounterCategory(categoryName, machineName);
        }

        // Check whether the specified counter exists.
        // Use the per-instance overload of CounterExists.
        objectExists = pcc.CounterExists(counterName);
    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to check for the existence of " +
            "counter \"{0}\" in category \"{1}\" on "+
            (machineName.Length>0? "computer \"{2}\".": "this computer.")+ "\n" +
            ex.Message, counterName, categoryName, machineName);
        return;
    }

    // Tell the user whether the counter exists.
    Console.WriteLine("Counter \"{0}\" " + (objectExists? "exists": "does not exist") +
        " in category \"{1}\" on " + (machineName.Length>0? "computer \"{2}\".": "this computer."),
        counterName, pcc.CategoryName, pcc.MachineName);
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim counterName As String = ""
    Dim machineName As String = ""
    Dim objectExists As Boolean = False
    Dim pcc As PerformanceCounterCategory

    ' Copy the supplied arguments into the local variables.
    Try
        categoryName = args(0)
        counterName = args(1)
        machineName = IIf(args(2) = ".", "", args(2))
    Catch ex As Exception
        ' Ignore the exception from non-supplied arguments.
    End Try

    Try
        If machineName.Length = 0 Then
            pcc = New PerformanceCounterCategory(categoryName)
        Else
            pcc = New PerformanceCounterCategory(categoryName, machineName)
        End If

        ' Check whether the specified counter exists.
        ' Use the per-instance overload of CounterExists.
        objectExists = pcc.CounterExists(counterName)

    Catch ex As Exception
        Console.WriteLine("Unable to check for the existence of " & _
            "counter ""{0}"" in category ""{1}"" on " & _
            IIf(machineName.Length > 0, _
            "computer ""{2}"".", "this computer.") & vbCrLf & _
            ex.Message, counterName, categoryName, machineName)
        Return
    End Try

    ' Tell the user whether the counter exists.
    Console.WriteLine("Counter ""{0}"" " & _
        IIf(objectExists, "exists", "does not exist") & _
        " in category ""{1}"" on " & _
        IIf(machineName.Length > 0, _
            "computer ""{2}"".", "this computer."), _
        counterName, pcc.CategoryName, pcc.MachineName)
End Sub

Comentários

Você deve definir a CategoryName propriedade antes de chamar esse método. Caso contrário, uma exceção será gerada.

Se você não tiver definido a MachineName propriedade, esse método usará o computador local (".").

Observação

Para ler contadores de desempenho de uma sessão de logon não interativa no Windows Vista e posteriores, Windows XP Professional x64 Edition ou Windows Server 2003, você deve ser membro do grupo Monitor de Desempenho Usuários ou ter privilégios administrativos.

Para evitar a necessidade de elevar seus privilégios para acessar contadores de desempenho no Windows Vista e posteriores, adicione-se ao grupo Monitor de Desempenho Usuários.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Confira também

Aplica-se a

CounterExists(String, String)

Determina se o contador especificado está registrado para a categoria especificada no computador local.

public:
 static bool CounterExists(System::String ^ counterName, System::String ^ categoryName);
public static bool CounterExists (string counterName, string categoryName);
static member CounterExists : string * string -> bool
Public Shared Function CounterExists (counterName As String, categoryName As String) As Boolean

Parâmetros

counterName
String

O nome do contador de desempenho a procurar.

categoryName
String

O nome da categoria de contador de desempenho ou objeto de desempenho, à qual este contador de desempenho especificado está associado.

Retornos

Boolean

true se o contador for registrado para a categoria especificada no computador local; caso contrário, false.

Exceções

O categoryName é null.

- ou - O counterName é null.

O categoryName é uma cadeia de caracteres vazia ("").

O nome da categoria não existe.

Falha ao chamar uma API do sistema subjacente.

Um código em execução sem privilégios administrativos tentou ler um contador de desempenho.

Exemplos

O exemplo de código a seguir determina se existe um PerformanceCounter . Ele obtém um nome de categoria, nome do contador e nome do computador da linha de comando, se eles forem fornecidos. Ele usa as sobrecargas estáticas do CounterExists método para determinar se o nome especificado PerformanceCounter existe no PerformanceCounterCategory. A sobrecarga é selecionada com base em se um nome de computador é fornecido.

public static void Main(string[] args)
{
    string categoryName = "";
    string counterName = "";
    string machineName = "";
    bool objectExists = false;

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

    try
    {
        // Check whether the specified counter exists.
        // Use the static forms of the CounterExists method.
        if (machineName.Length==0)
        {
            objectExists = PerformanceCounterCategory.CounterExists(counterName, categoryName);
        }
        else
        {
            objectExists = PerformanceCounterCategory.CounterExists(counterName, categoryName, machineName);
        }
    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to check for the existence of " +
            "counter \"{0}\" in category \"{1}\" on " +
            (machineName.Length>0? "computer \"{2}\".": "this computer.") + "\n" +
            ex.Message, counterName, categoryName, machineName);
        return;
    }

    // Tell the user whether the counter exists.
    Console.WriteLine("Counter \"{0}\" "+ (objectExists? "exists": "does not exist") +
        " in category \"{1}\" on " + (machineName.Length>0? "computer \"{2}\".": "this computer."),
        counterName, categoryName, machineName);
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim counterName As String = ""
    Dim machineName As String = ""
    Dim objectExists As Boolean = False

    ' Copy the supplied arguments into the local variables.
    Try
        categoryName = args(0)
        counterName = args(1)
        machineName = IIf(args(2) = ".", "", args(2))
    Catch ex As Exception
        ' Ignore the exception from non-supplied arguments.
    End Try

    Try
        ' Check whether the specified counter exists.
        ' Use the static forms of the CounterExists method.
        If machineName.Length = 0 Then
            objectExists = PerformanceCounterCategory.CounterExists( _
                counterName, categoryName)
        Else
            objectExists = PerformanceCounterCategory.CounterExists( _
                counterName, categoryName, machineName)
        End If

    Catch ex As Exception
        Console.WriteLine("Unable to check for the existence of " & _
            "counter ""{0}"" in category ""{1}"" on " & _
            IIf(machineName.Length > 0, _
            "computer ""{2}"".", "this computer.") & vbCrLf & _
            ex.Message, counterName, categoryName, machineName)
        Return
    End Try

    ' Tell the user whether the counter exists.
    Console.WriteLine("Counter ""{0}"" " & _
        IIf(objectExists, "exists", "does not exist") & _
        " in category ""{1}"" on " & _
        IIf(machineName.Length > 0, _
            "computer ""{2}"".", "this computer."), _
        counterName, categoryName, machineName)
End Sub

Comentários

Observação

Para ler contadores de desempenho de uma sessão de logon não interativa no Windows Vista e posteriores, Windows XP Professional x64 Edition ou Windows Server 2003, você deve ser membro do grupo Monitor de Desempenho Usuários ou ter privilégios administrativos.

Para evitar ter que elevar seus privilégios para acessar contadores de desempenho no Windows Vista e posteriores, adicione-se ao grupo Monitor de Desempenho Usuários.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, você deve primeiro elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Confira também

Aplica-se a

CounterExists(String, String, String)

Determina se o contador especificado está registrado para a categoria especificada em um computador remoto.

public:
 static bool CounterExists(System::String ^ counterName, System::String ^ categoryName, System::String ^ machineName);
public static bool CounterExists (string counterName, string categoryName, string machineName);
static member CounterExists : string * string * string -> bool
Public Shared Function CounterExists (counterName As String, categoryName As String, machineName As String) As Boolean

Parâmetros

counterName
String

O nome do contador de desempenho a procurar.

categoryName
String

O nome da categoria de contador de desempenho ou objeto de desempenho, à qual este contador de desempenho especificado está associado.

machineName
String

O nome do computador no qual existem a categoria do contador de desempenho e seus contadores associados.

Retornos

Boolean

true se o contador for registrado para a categoria especificada no computador especificado; caso contrário, false.

Exceções

O categoryName é null.

- ou - O counterName é null.

O categoryName é uma cadeia de caracteres vazia ("").

- ou - O machineName é inválido.

O nome da categoria não existe.

Falha ao chamar uma API do sistema subjacente.

Um código em execução sem privilégios administrativos tentou ler um contador de desempenho.

Exemplos

O exemplo de código a seguir determina se existe um PerformanceCounter . Ele obtém um nome de categoria, nome do contador e nome do computador da linha de comando, se eles forem fornecidos. Ele usa as sobrecargas estáticas do CounterExists método para determinar se o nome especificado PerformanceCounter existe no PerformanceCounterCategory. A sobrecarga é selecionada com base em se um nome de computador é fornecido.

public static void Main(string[] args)
{
    string categoryName = "";
    string counterName = "";
    string machineName = "";
    bool objectExists = false;

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

    try
    {
        // Check whether the specified counter exists.
        // Use the static forms of the CounterExists method.
        if (machineName.Length==0)
        {
            objectExists = PerformanceCounterCategory.CounterExists(counterName, categoryName);
        }
        else
        {
            objectExists = PerformanceCounterCategory.CounterExists(counterName, categoryName, machineName);
        }
    }
    catch(Exception ex)
    {
        Console.WriteLine("Unable to check for the existence of " +
            "counter \"{0}\" in category \"{1}\" on " +
            (machineName.Length>0? "computer \"{2}\".": "this computer.") + "\n" +
            ex.Message, counterName, categoryName, machineName);
        return;
    }

    // Tell the user whether the counter exists.
    Console.WriteLine("Counter \"{0}\" "+ (objectExists? "exists": "does not exist") +
        " in category \"{1}\" on " + (machineName.Length>0? "computer \"{2}\".": "this computer."),
        counterName, categoryName, machineName);
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim counterName As String = ""
    Dim machineName As String = ""
    Dim objectExists As Boolean = False

    ' Copy the supplied arguments into the local variables.
    Try
        categoryName = args(0)
        counterName = args(1)
        machineName = IIf(args(2) = ".", "", args(2))
    Catch ex As Exception
        ' Ignore the exception from non-supplied arguments.
    End Try

    Try
        ' Check whether the specified counter exists.
        ' Use the static forms of the CounterExists method.
        If machineName.Length = 0 Then
            objectExists = PerformanceCounterCategory.CounterExists( _
                counterName, categoryName)
        Else
            objectExists = PerformanceCounterCategory.CounterExists( _
                counterName, categoryName, machineName)
        End If

    Catch ex As Exception
        Console.WriteLine("Unable to check for the existence of " & _
            "counter ""{0}"" in category ""{1}"" on " & _
            IIf(machineName.Length > 0, _
            "computer ""{2}"".", "this computer.") & vbCrLf & _
            ex.Message, counterName, categoryName, machineName)
        Return
    End Try

    ' Tell the user whether the counter exists.
    Console.WriteLine("Counter ""{0}"" " & _
        IIf(objectExists, "exists", "does not exist") & _
        " in category ""{1}"" on " & _
        IIf(machineName.Length > 0, _
            "computer ""{2}"".", "this computer."), _
        counterName, categoryName, machineName)
End Sub

Comentários

Observação

Para ler contadores de desempenho de uma sessão de logon não interativa no Windows Vista e posteriores, Windows XP Professional x64 Edition ou Windows Server 2003, você deve ser membro do grupo Monitor de Desempenho Usuários ou ter privilégios administrativos.

Para evitar ter que elevar seus privilégios para acessar contadores de desempenho no Windows Vista e posteriores, adicione-se ao grupo Monitor de Desempenho Usuários.

No Windows Vista e posterior, UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, você deve primeiro elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Confira também

Aplica-se a