PerformanceCounterCategory.InstanceExists Метод

Определение

Определяет, содержит ли категория указанный экземпляр объекта производительности.Determines whether the category contains the specified performance object instance.

Перегрузки

InstanceExists(String)

Определяет, существует ли указанный экземпляр объекта производительности в категории, определяемой свойством PerformanceCounterCategory объекта CategoryName.Determines whether the specified performance object instance exists in the category that is identified by this PerformanceCounterCategory object's CategoryName property.

InstanceExists(String, String)

Определяет, содержит ли указанная категория заданный экземпляр объекта производительности на локальном компьютере.Determines whether a specified category on the local computer contains the specified performance object instance.

InstanceExists(String, String, String)

Определяет, содержит ли указанная категория на заданном компьютере заданный экземпляр объекта производительности.Determines whether a specified category on a specified computer contains the specified performance object instance.

InstanceExists(String)

Определяет, существует ли указанный экземпляр объекта производительности в категории, определяемой свойством PerformanceCounterCategory объекта CategoryName.Determines whether the specified performance object instance exists in the category that is identified by this PerformanceCounterCategory object's CategoryName property.

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

Параметры

instanceName
String

Искомый экземпляр объекта производительности в данной категории счетчиков производительности.The performance object instance in this performance counter category to search for.

Возвращаемое значение

Boolean

Если категория содержит указанный экземпляр объекта производительности, значение true, если нет, значение false.true if the category contains the specified performance object instance; otherwise, false.

Исключения

Значение свойства CategoryNamenull.The CategoryName property is null. Возможно, свойство не задано.The property might not have been set.

Параметр instanceName имеет значение null.The instanceName parameter is null.

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода определяется, PerformanceCounter существует ли экземпляр в PerformanceCounterCategory .The following code example determines whether a PerformanceCounter instance exists within a PerformanceCounterCategory. Сначала он создает PerformanceCounterCategory объект, используя соответствующий конструктор в зависимости от того, было ли указано имя компьютера.It first creates a PerformanceCounterCategory object, using the appropriate constructor based on whether a computer name was specified. Затем он использует InstanceExists(String) , чтобы определить, существует ли указанный экземпляр, а затем информирует пользователя.It then uses InstanceExists(String) to determine whether the specified instance exists, then informs the user. Если имя экземпляра не указано, в примере используется имя одиночного экземпляра по умолчанию.If no instance name is specified, the example uses the default single-instance name.

public static void Main(string[] args)
{
    string categoryName = "";
    string instanceName = "";
    string machineName = "";
    bool objectExists = false;
    PerformanceCounterCategory pcc;
    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
    {
        if (machineName.Length==0)
        {
            pcc = new PerformanceCounterCategory(categoryName);
        }
        else
        {
            pcc = new PerformanceCounterCategory(categoryName, machineName);
        }

        // Check whether the instance exists.
        // Use the per-instance overload of InstanceExists.
        objectExists = pcc.InstanceExists(instanceName);
    }
    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, pcc.CategoryName, pcc.MachineName);
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim instanceName As String = ""
    Dim machineName As String = ""
    Dim objectExists As Boolean = False
    Dim pcc As PerformanceCounterCategory
    Const SINGLE_INSTANCE_NAME As String = _
        "systemdiagnosticsperfcounterlibsingleinstance"

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

    ' Use the given instance name or use the default single-instance name.
    If instanceName.Length = 0 Then
        instanceName = SINGLE_INSTANCE_NAME
    End If

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

        ' Check whether the instance exists.
        ' Use the per-instance overload of InstanceExists.
        objectExists = pcc.InstanceExists(instanceName)

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

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

Комментарии

Эта перегрузка метода InstanceExists не является static .This overload of InstanceExists is not static. Для этого необходимо создать PerformanceCounterCategory объект и задать CategoryName свойство.It requires you to create a PerformanceCounterCategory object and to set the CategoryName property.

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к

InstanceExists(String, String)

Определяет, содержит ли указанная категория заданный экземпляр объекта производительности на локальном компьютере.Determines whether a specified category on the local computer contains the specified performance object instance.

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

Параметры

instanceName
String

Искомый экземпляр объекта производительности.The performance object instance to search for.

categoryName
String

Искомая категория счетчиков производительности.The performance counter category to search.

Возвращаемое значение

Boolean

Если категория содержит указанный экземпляр объекта производительности, значение true, если нет, значение false.true if the category contains the specified performance object instance; otherwise, false.

Исключения

Параметр instanceName имеет значение null.The instanceName parameter is null.

-или--or- Параметр categoryName имеет значение null.The categoryName parameter is null.

Параметр categoryName представляет собой пустую строку ("").The categoryName parameter is an empty string ("").

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода используются статические перегрузки метода, InstanceExists чтобы определить, существует ли данный PerformanceCounter экземпляр в PerformanceCounterCategory .The following code example uses the static overloads of InstanceExists to determine whether the given PerformanceCounter instance exists in the PerformanceCounterCategory. Перегрузка выбирается в зависимости от того, указано ли имя компьютера.The overload is selected based on whether a computer name is specified. Если имя экземпляра не указано, в примере используется имя одиночного экземпляра по умолчанию.If no instance name is specified, the example uses the default single-instance name.

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);
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim instanceName As String = ""
    Dim machineName As String = ""
    Dim objectExists As Boolean = False
    Const SINGLE_INSTANCE_NAME As String = _
        "systemdiagnosticsperfcounterlibsingleinstance"

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

    ' Use the given instance name or use the default single-instance name.
    If instanceName.Length = 0 Then
        instanceName = SINGLE_INSTANCE_NAME
    End If

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

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

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

Комментарии

Невозможно определить, существует ли экземпляр объекта производительности на компьютере, не указывая конкретную категорию для поиска.It is not possible to determine whether a performance object instance exists on a computer without specifying a specific category to look in.

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к

InstanceExists(String, String, String)

Определяет, содержит ли указанная категория на заданном компьютере заданный экземпляр объекта производительности.Determines whether a specified category on a specified computer contains the specified performance object instance.

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

Параметры

instanceName
String

Искомый экземпляр объекта производительности.The performance object instance to search for.

categoryName
String

Искомая категория счетчиков производительности.The performance counter category to search.

machineName
String

Имя компьютера, на котором будет производиться поиск экземпляра и соответствующей категории.The name of the computer on which to look for the category instance pair.

Возвращаемое значение

Boolean

Если категория содержит указанный экземпляр объекта производительности, значение true, если нет, значение false.true if the category contains the specified performance object instance; otherwise, false.

Исключения

Параметр instanceName имеет значение null.The instanceName parameter is null.

-или--or- Параметр categoryName имеет значение null.The categoryName parameter is null.

Параметр categoryName представляет собой пустую строку ("").The categoryName parameter is an empty string ("").

-или--or- Параметр machineName является недопустимым.The machineName parameter is invalid.

Сбой при вызове основного API системы.A call to an underlying system API failed.

Код, выполняющийся без привилегий администратора, предпринял попытку считывания значения счетчика производительности.Code that is executing without administrative privileges attempted to read a performance counter.

Примеры

В следующем примере кода используются статические перегрузки метода, InstanceExists чтобы определить, существует ли данный PerformanceCounter экземпляр в PerformanceCounterCategory .The following code example uses the static overloads of InstanceExists to determine whether the given PerformanceCounter instance exists in the PerformanceCounterCategory. Перегрузка выбирается в зависимости от того, указано ли имя компьютера.The overload is selected based on whether a computer name is specified. Если имя экземпляра не указано, в примере используется имя одиночного экземпляра по умолчанию.If no instance name is specified, the example uses the default single-instance name.

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);
}
Sub Main(ByVal args() As String)
    Dim categoryName As String = ""
    Dim instanceName As String = ""
    Dim machineName As String = ""
    Dim objectExists As Boolean = False
    Const SINGLE_INSTANCE_NAME As String = _
        "systemdiagnosticsperfcounterlibsingleinstance"

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

    ' Use the given instance name or use the default single-instance name.
    If instanceName.Length = 0 Then
        instanceName = SINGLE_INSTANCE_NAME
    End If

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

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

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

Комментарии

Невозможно определить, существует ли экземпляр объекта производительности на компьютере, не указывая конкретную категорию для поиска.It is not possible to determine whether a performance object instance exists on a computer without specifying a specific category to look in.

Для указания локального компьютера можно использовать ".".You can use "." to specify the local computer.

Примечание

Для чтения счетчиков производительности из сеанса неинтерактивного входа в систему Windows Vista и более поздних версий, Windows XP Professional x64 Edition или Windows Server 2003 необходимо быть членом группы пользователей системного монитора или обладать правами администратора.To read performance counters from a non-interactive logon session in Windows Vista and later, Windows XP Professional x64 Edition, or Windows Server 2003, you must either be a member of the Performance Monitor Users group or have administrative privileges.

Чтобы не допустить повышения привилегий для доступа к счетчикам производительности в Windows Vista и более поздних версиях, добавьте себя в группу "Пользователи системного монитора".To avoid having to elevate your privileges to access performance counters in Windows Vista and later, add yourself to the Performance Monitor Users group.

В Windows Vista и более поздних версиях права доступа пользователя определяются контролем учетных записей.In Windows Vista and later, User Account Control (UAC) determines the privileges of a user. Члену встроенной группы "Администраторы" присваивается два маркера доступа на время выполнения: маркер доступа обычного пользователя и маркер доступа администратора.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. По умолчанию назначена роль обычного пользователя.By default, you are in the standard user role. Чтобы выполнить код, обращающийся к счетчикам производительности, необходимо сначала повысить привилегии обычного пользователя до администратора.To execute the code that accesses performance counters, you must first elevate your privileges from standard user to administrator. Это можно сделать при запуске приложения, , щелкнув значок приложения правой кнопкой мыши и указав, что приложение должно запускаться от имени администратора.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

См. также раздел

Применяется к