PerformanceCounterCategory.Exists 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确定是否在系统上注册了该类别。
重载
Exists(String) |
确定是否在本地计算机上注册了该类别。 |
Exists(String, String) |
确定是否在指定的计算机上注册了该类别。 |
Exists(String)
确定是否在本地计算机上注册了该类别。
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 的调用失败。
以不具有管理特权的用户身份正在执行的代码尝试读取性能计数器。
示例
下面的代码示例确定 PerformanceCounterCategory 是否存在名为“orders”的对象。 如果没有,它将使用包含两个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)
确定是否在指定的计算机上注册了该类别。
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
。
对基础系统 API 的调用失败。
无法找到网络路径。
示例
以下示例确定 PerformanceCounterCategory 是否存在名为 的对象 Orders
。 如果该对象不存在,则本示例使用包含两个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 组的成员,将为您分配两个运行时访问令牌:一个标准用户访问令牌和一个管理员访问令牌。 默认情况下,您拥有标准用户角色。 若要执行访问性能计数器的代码,必须先将权限从标准用户提升为管理员。 你可以通过以下方式执行此操作:右键单击应用程序图标并指示需以管理员身份运行。