«System.ComponentModel.Win32Exception: доступ запрещен» генерируется при вызове PerformanceCounterCategory.Create () - PullRequest
1 голос
/ 29 марта 2010

Вызов PerformanceCounterCategory.Create () ниже на моей машине исключает это исключение:

System.ComponentModel.Win32Exception: доступ запрещен

И сообщение в Event Viewer выглядит следующим образом:

Не удалось открыть или получить доступ к ключу ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ Perflib для установки строк счетчика. Статус Win32, возвращаемый вызовом, является первым DWORD в разделе данных.

Вы знаете, в чем проблема?

Спасибо!

        if (!PerformanceCounterCategory.Exists("MyCategory"))
        {
            CounterCreationDataCollection counters = new CounterCreationDataCollection();

            CounterCreationData avgDurationBase = new CounterCreationData();
            avgDurationBase.CounterName = "average time per operation base";
            avgDurationBase.CounterHelp = "Average duration per operation execution base";
            avgDurationBase.CounterType = PerformanceCounterType.AverageBase;
            counters.Add(avgDurationBase);


            // create new category with the counters above
            PerformanceCounterCategory.Create("MyCategory",
                "Sample category for Codeproject", PerformanceCounterCategoryType.SingleInstance, counters);
        }

1 Ответ

1 голос
/ 29 марта 2010

Для создания счетчиков производительности вам необходимо иметь достаточные привилегии. Попробуйте запустить этот код под учетной записью администратора.

Еще одно важное замечание. Вот цитата из документации :

Настоятельно рекомендуется, чтобы новый категории счетчика производительности быть созданный во время установки приложение, а не во время исполнения приложения. Это позволяет время для операционной системы, чтобы обновить его список зарегистрированных выступлений счетчик категорий. Если список имеет не обновилась, попытка использовать категория потерпит неудачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...