다음을 통해 공유


PerformanceCounterCategory.Exists 메서드

정의

범주가 시스템에 등록되었는지 여부를 확인합니다.

오버로드

Exists(String)

범주가 로컬 시스템에 등록되었는지 여부를 확인합니다.

Exists(String, String)

범주가 지정한 컴퓨터에 등록되었는지 여부를 확인합니다.

Exists(String)

Source:
PerformanceCounterCategory.cs
Source:
PerformanceCounterCategory.cs
Source:
PerformanceCounterCategory.cs

범주가 로컬 시스템에 등록되었는지 여부를 확인합니다.

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

매개 변수

categoryName
String

찾을 성능 카운터 범주의 이름입니다.

반환

범주가 등록되었으면 true이고, 그렇지 않으면 false입니다.

예외

categoryName 매개 변수가 null인 경우

categoryName 매개 변수가 빈 문자열("")입니다.

내부 시스템 API를 호출하지 못한 경우

관리자 권한 없이 실행되는 코드가 성능 카운터를 읽으려고 한 경우

예제

다음 코드 예제에서는 "orders"라는 개체가 PerformanceCounterCategory 있는지 여부를 결정합니다. 그렇지 않은 경우 두 개의 성능 카운터가 포함된 개체를 CounterCreationDataCollection 사용하여 개체를 만듭니다PerformanceCounterCategory.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

설명

메서드를 Exists 사용하면 눈에 띄는 성능 저하가 발생할 수 있으며 컴퓨터의 모든 성능 카운터에서 가용성을 확인할 수 있습니다. 성능 카운터로만 작성 하는 경우에 애플리케이션이 설치 되어 있고 범주가 있다고 가정 카운터에 액세스할 때 성능 카운터를 만들어 성능 카운터에 대 한 전체 검색을 방지할 수 있습니다. 성능 카운터에서 읽을 때 성능 카운터 검색을 방지할 수 있는 방법은 없습니다.

참고

Windows Vista 이상, Windows XP Professional x64 Edition 또는 Windows Server 2003의 비대화형 로그온 세션에서 성능 카운터를 읽으려면 성능 모니터 사용자 그룹의 구성원이거나 관리 권한이 있어야 합니다.

Windows Vista 이상에서 성능 카운터에 액세스하기 위해 권한을 상승시킬 필요가 없도록 성능 모니터 사용자 그룹에 자신을 추가합니다.

Windows Vista 이상에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 성능 카운터에 액세스하는 코드를 실행하려면 먼저 표준 사용자에서 관리자로 권한을 상승시켜야 합니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자로 실행하도록 지정하여 애플리케이션을 시작하면 이 작업을 수행할 수 있습니다.

추가 정보

적용 대상

Exists(String, String)

Source:
PerformanceCounterCategory.cs
Source:
PerformanceCounterCategory.cs
Source:
PerformanceCounterCategory.cs

범주가 지정한 컴퓨터에 등록되었는지 여부를 확인합니다.

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

매개 변수

categoryName
String

찾을 성능 카운터 범주의 이름입니다.

machineName
String

해당 범주에 대해 조사할 컴퓨터의 이름입니다.

반환

범주가 등록되었으면 true이고, 그렇지 않으면 false입니다.

예외

categoryName 매개 변수가 null인 경우

categoryName 매개 변수가 빈 문자열("")입니다.

또는

machineName 매개 변수가 잘못되었습니다.

내부 시스템 API를 호출하지 못한 경우

네트워크 경로를 찾을 수 없는 경우

호출자에게 필요한 권한이 없는 경우

또는

관리자 권한 없이 실행되는 코드가 성능 카운터를 읽으려고 한 경우

예제

다음 예제에서는 라는 Orders 개체가 PerformanceCounterCategory 있는지 여부를 결정합니다. 이 개체가 없으면 두 개의 성능 카운터가 포함된 개체를 CounterCreationDataCollection 사용하여 개체를 만드는 PerformanceCounterCategory 예제입니다.

if (  !PerformanceCounterCategory::Exists( "Orders" ) )
{
   CounterCreationData^ milk = gcnew CounterCreationData;
   milk->CounterName = "milk";
   milk->CounterType = PerformanceCounterType::NumberOfItems32;

   CounterCreationData^ milkPerSecond = gcnew CounterCreationData;
   milkPerSecond->CounterName = "milk orders/second";
   milkPerSecond->CounterType = PerformanceCounterType::RateOfCountsPerSecond32;

   CounterCreationDataCollection^ ccds = gcnew CounterCreationDataCollection;
   ccds->Add( milkPerSecond );
   ccds->Add( milk );
   PerformanceCounterCategory::Create( "Orders", "Number of processed orders", ccds );
}
if (!PerformanceCounterCategory.Exists("Orders"))
{
    CounterCreationData milk = new CounterCreationData();
    milk.CounterName = "milk";
    milk.CounterType = PerformanceCounterType.NumberOfItems32;

    CounterCreationData milkPerSecond = new CounterCreationData();
    milkPerSecond.CounterName = "milk orders/second";
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;

    CounterCreationDataCollection ccds = new CounterCreationDataCollection();
    ccds.Add(milkPerSecond);
    ccds.Add(milk);

    PerformanceCounterCategory.Create("Orders", "Number of processed orders",
        PerformanceCounterCategoryType.SingleInstance, ccds);
}
If Not PerformanceCounterCategory.Exists("Orders") Then        
    Dim milk As New CounterCreationData()
    milk.CounterName = "milk"
    milk.CounterType = PerformanceCounterType.NumberOfItems32
    
    Dim milkPerSecond As New CounterCreationData()
    milkPerSecond.CounterName = "milk orders/second"
    milkPerSecond.CounterType = PerformanceCounterType.RateOfCountsPerSecond32
    
    Dim ccds As New CounterCreationDataCollection()
    ccds.Add(milkPerSecond)
    ccds.Add(milk)
    
    PerformanceCounterCategory.Create("Orders", "Number of processed orders", _
           PerformanceCounterCategoryType.SingleInstance, ccds)
End If

설명

메서드를 Exists 사용하면 눈에 띄는 성능 저하가 발생할 수 있으며 컴퓨터의 모든 성능 카운터에서 가용성을 확인할 수 있습니다. 성능 카운터로만 작성 하는 경우에 애플리케이션이 설치 되어 있고 범주가 있다고 가정 카운터에 액세스할 때 성능 카운터를 만들어 성능 카운터에 대 한 전체 검색을 방지할 수 있습니다. 성능 카운터에서 읽을 때 성능 카운터 검색을 방지할 수 있는 방법은 없습니다.

참고

Windows Vista 이상, Windows XP Professional x64 Edition 또는 Windows Server 2003의 비대화형 로그온 세션에서 성능 카운터를 읽으려면 성능 모니터 사용자 그룹의 구성원이거나 관리 권한이 있어야 합니다.

Windows Vista 이상에서 성능 카운터에 액세스하기 위해 권한을 상승시킬 필요가 없도록 성능 모니터 사용자 그룹에 자신을 추가합니다.

Windows Vista 이상에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 성능 카운터에 액세스하는 코드를 실행하려면 먼저 표준 사용자에서 관리자로 권한을 상승시켜야 합니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자로 실행하도록 지정하여 애플리케이션을 시작하면 이 작업을 수행할 수 있습니다.

추가 정보

적용 대상