none
クライアントのOSのバージョンを取得したい RRS feed

  • 質問

  • Windows 2003 Server +ASP.NET(C#) で開発しています。
    クライアントのOSバージョンを取得したいのですが、
    下記のようにしたら、サーバのOSを取得してしまいます。
    (クライアントのブラウザのバージョンは取得できました)
    UserAgent を利用してみましたが、どうやってOS部分のみを
    取得すれば良いか分かりません。

    よろしくお願い致します。

                OperatingSystem osInfo = System.Environment.OSVersion;
                string OSName = "不明";  // Windows名
                switch (osInfo.Platform)
                {
                    case PlatformID.Win32Windows:  // Windows 9x系
                        if (osInfo.Version.Major == 4)
                        {
                            switch (osInfo.Version.Minor)
                            {
                                case 0:  // .NET Frameworkのサポートなし
                                    OSName = "Windows 95";
                                    break;
                                case 10:
                                    OSName = "Windows 98";
                                    break;
                                case 90:
                                    OSName = "Windows Me";
                                    break;
                            }
                        }
                        break;

                    case PlatformID.Win32NT:  // Windows NT系
                        if (osInfo.Version.Major == 4)
                        {
                            // .NET Framework 2.0以降のサポートなし
                            OSName = "Windows NT 4.0";
                        }
                        else if (osInfo.Version.Major == 5)
                        {
                            switch (osInfo.Version.Minor)
                            {
                                case 0:
                                    OSName = "Windows 2000";
                                    break;

                                case 1:
                                    OSName = "Windows XP";
                                    break;

                                case 2:
                                    OSName = "Windows Server 2003";
                                    break;
                            }
                        }
                        else if (osInfo.Version.Major == 6)
                        {
                            switch (osInfo.Version.Minor)
                            {
                                case 0:
                                    OSName = "Windows Vista";
                                    break;
                                case 1:
                                    OSName = "Windows 7";
                                    break;
                            }
                        }
                        break;
                }

    2009年11月20日 2:32

回答

  • System.Environment.OSVersion は、さすがに実行さているマシンの情報しか取得できません。
    User agent でがんばりましょう。
    簡単なのは、正規表現なり単純な文字マッチなどで判断です。
    • 回答としてマーク mikako0110 2009年11月20日 5:26
    2009年11月20日 3:28

すべての返信