«Отказано в доступе» при попытке получить время запуска процесса - PullRequest
0 голосов
/ 12 января 2019

Прямо сейчас я пытаюсь узнать время запуска всех процессов, запущенных на компьютере. Код, который у меня есть для этого:

foreach (Process item in Process.GetProcesses())
            {
                txtActivity.AppendText(item.StartTime.ToString());
            }

Проблема в том, что я сталкиваюсь с этой ошибкой:

System.ComponentModel.Win32Exception: 'Access is denied'

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

1 Ответ

0 голосов
/ 12 января 2019

Некоторые процессы ведут себя так, но я не знаю точно, почему. Вы можете узнать, какие из них это делают, обернув ваш код в try/catch, чтобы вы могли посмотреть на имена процессов, которые выдают исключение.

Например

private static void Main()
{
    foreach (Process item in Process.GetProcesses())
    {
        try
        {
            Console.WriteLine($"{item.ProcessName} started at: {item.StartTime}");
        }
        catch(Exception e)
        {
            WriteColoredLine($"{e.Message}: {item.ProcessName}", ConsoleColor.Red);
        }
    }

    GetKeyFromUser("Done! Press any key to exit...");
}

private static void WriteColoredLine(string message, ConsoleColor color)
{
    Console.ForegroundColor = color;
    Console.WriteLine(message);
    Console.ResetColor();
}

Пример вывода

enter image description here

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