トップ回答者
クライアントのOSのバージョンを取得したい

質問
-
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;
}
回答
-
System.Environment.OSVersion は、さすがに実行さているマシンの情報しか取得できません。
User agent でがんばりましょう。
簡単なのは、正規表現なり単純な文字マッチなどで判断です。- 回答としてマーク mikako0110 2009年11月20日 5:26
すべての返信
-
System.Environment.OSVersion は、さすがに実行さているマシンの情報しか取得できません。
User agent でがんばりましょう。
簡単なのは、正規表現なり単純な文字マッチなどで判断です。- 回答としてマーク mikako0110 2009年11月20日 5:26
-
一応、
HttpCapabilitiesBase.Platform プロパティ
http://msdn.microsoft.com/ja-jp/library/system.web.configuration.httpcapabilitiesbase.platform(VS.80).aspx
なんていうのもありますが、お勧めは囚人さんが言われている通り、
HttpRequest.UserAgent プロパティ
http://msdn.microsoft.com/ja-jp/library/system.web.httprequest.useragent(VS.80).aspx
から取得することになります。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/