Leonardo Metre Ответов: 2

Асесс отказал в системе.Диагностика.Процесс.GetProcesses()


Я пытаюсь написать код для подсчета всех процессов машины и времени, затраченного мной на каждый процесс.

Когда я начинаю отлаживать следующий код ниже, возникает исключение, когда я пытаюсь получить processStartTime.

Сообщение "Acess Denied".

п. Свойство StartTime 'С. Свойство StartTime' выбросил исключение типа 'System.ComponentModel.Win32Exception'

ЭМ-система.Диагностика.Координат.Для открытия процесса(процесса типа int32, int32 и открыть, логическое throwIfExited)
ЭМ-система.Диагностика.Процесс.GetProcessHandle(типа int32 доступ, логическое throwIfExited)
ЭМ-система.Диагностика.Процесс.GetProcessTimes()
ЭМ-система.Диагностика.Процесс.get_StartTime()


Кто-нибудь может мне помочь ?

С уважением

var list = System.Diagnostics.Process.GetProcesses();
           foreach (var p in list)
           {
               System.Diagnostics.PerformanceCounter pc = new System.Diagnostics.PerformanceCounter();

               string processStartTime = string.Empty;
               if (p.StartTime != null)
                   processStartTime = p.StartTime.ToString();
               listbox1.Items.Add(p.ProcessName + " MainWindowHandle: " + p.MainWindowTitle + " process start time: " + processStartTime);
           }

2 Ответов

Рейтинг:
2

Raul Iloc

1.Вы должны иметь права администратора, чтобы иметь доступ к информации о процессе.

2.решение состоит в том, чтобы запустить ваше приложение "от имени администратора".


Leonardo Metre

когда имя процесса "простаивает", срабатывает то же самое исключение

Рейтинг:
0

Member 14721447

Замените манифест вашего приложения следующими строками
&ЛТ;уровень requestedexecutionlevel="функции requireadministrator" uiaccess уровня="ложно"и GT;