/// <summary> /// Instala la categoría y sus contadores asociados en la máquina /// </summary> /// <param name="category">Categoría a instalar</param> private static void InstallPerformanceCounterCategory(CounterCategoryData category) { CounterCreationDataCollection counterDataCol = new CounterCreationDataCollection(); foreach (CounterData counterData in category.GetAllCounters()) { CounterCreationData creationData; creationData = new CounterCreationData( counterData.Name, counterData.Description, counterData.Type); counterDataCol.Add(creationData); if (counterData.HasBaseCounter) { creationData = new CounterCreationData( counterData.BaseName, counterData.BaseDescription, counterData.BaseType); counterDataCol.Add(creationData); } } try { PerformanceCounterCategory.Create(category.Name, category.Description, category.Type, counterDataCol); } catch (SecurityException uex) { throw new InstrumentationException(string.Format( Messages.InsufficientPermissionsForCounterCategoryCreation, category.Name), uex); } }
/// <summary> /// Agrega un nuevo contador /// </summary> /// <param name="categoryName">Nombre de la categoría del contador</param> /// <param name="counterName">Nombre del contador</param> /// <param name="counterDescription">Descripción del contador</param> /// <param name="counterType">Tipo del contador</param> public static void AddCounter(string categoryName, string counterName, string counterDescription, AlemanaPerformanceCounterType counterType) { if (!categoryDataList.ContainsKey(categoryName)) { throw new InstrumentationException(string.Format(Messages.CounterCategoryDoesntExist, categoryName)); } CounterCategoryData categoryData = categoryDataList[categoryName]; if (categoryData != null) { categoryData.AddCounter(counterName, counterDescription, counterType); } }
/// <summary> /// Elimina la categoría y sus contadores asociados instalados en la máquina /// </summary> /// <param name="category">Categoría a desinstalar</param> private static void UninstallPerformanceCounterCategory(CounterCategoryData category) { try { if (PerformanceCounterCategory.Exists(category.Name)) { PerformanceCounterCategory.Delete(category.Name); } } catch (SecurityException secEx) { throw new InstrumentationException(secEx, string.Format( Messages.InsufficientPermissionsForCounterCategoryDeletion, category.Name)); } catch (Exception ex) { throw new InstrumentationException(ex, string.Format( Messages.ExceptionCounterCategoryDeletion, category.Name)); } }