1

私はC#で書かれた.NETベースのデスクトップアプリケーションを開発しています。アプリケーションがクラッシュした場合、アプリケーションが実行されていたマシンに関する特定の詳細をキャプチャしたいと思います。

  1. オペレーティングシステムの詳細:バージョン、サービスパックなど。
  2. .NETの詳細:フレームワークバージョン
  3. インストールされたプログラム
  4. クラッシュ時に実行されていたプロセス。
  5. 私が見逃しているものですが、ここにあるはずです。

これらすべてを便利に入手できるツールまたはAPIセットはありますか?私がやりたいのは、(クラッシュが発生したときに)APIを呼び出し、すべての詳細をキャプチャして、ユーザーがそれを私に報告できるようにすることです。Windowsエラー報告サービスのようなもの。

PS:現在、Windowsエラー報告サービス自体にサインアップできません。

4

1 に答える 1

2

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

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

3) string registryKey = @"SOFTWARE\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);
}
于 2009-05-18T17:34:10.913 に答える