API / инструмент сбора данных о платформе - эквивалент отчетов об ошибках Windows - PullRequest
1 голос
/ 18 мая 2009

Я занимаюсь разработкой настольного приложения на основе .NET, написанного на C #. Если и когда происходит сбой приложения, я хотел бы получить некоторые сведения о машине, на которой было запущено приложение:

  1. Сведения об операционной системе: версия, пакет обновления и т. Д.
  2. .NET details: версия фреймворка
  3. Установленные программы
  4. Процессы, запущенные во время сбоя.
  5. То, чего мне не хватает, но должно быть здесь.

Есть ли инструмент или набор API, который позволяет мне получить все это удобно? То, что я хотел бы сделать, это вызвать API (когда происходит сбой), захватить все детали и позволить пользователю сообщить мне об этом. Что-то вроде службы отчетов об ошибках Windows.

P.S .: Сейчас я не могу подписаться на службу отчетов об ошибках Windows .

1 Ответ

2 голосов
/ 18 мая 2009

1) System.OperatingSystem osInfo = System.Environment.OSVersion;

2) http://geekswithblogs.net/lorint/archive/2006/01/30/67654.aspx

3) string registryKey = @ "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows \ CurrentVersion \ Uninstall";

        using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey)) 
        { 
            var query = from a in 
                            key.GetSubKeyNames() 
                        let r = key.OpenSubKey(a) 
                        select new 
                        { 
                            Application = r.GetValue("DisplayName") 
                        };

            foreach (var item in query) 
            { 
                if (item.Application != null)
                    Console.WriteLine(item.Application); 
            }
        }

(через http://www.onedotnetway.com/get-a-list-of-installed-applications-using-linq-and-c/)

4)

Process[] processlist = Process.GetProcesses();

foreach(Process theprocess in processlist)
{
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id);
}
...