C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 177 を表示中)
■101764 / )  HTTP_USER_AGENTによる使用OS判定について
□投稿者/ のんちゃん (1回)-(2023/04/17(Mon) 11:40:06)

分類:[ASP.NET (VB)] 

windows7とwindows10で処理を分ける必要がある為、
以下のプログラム(OsInfo)で判定しており、windows11でも同様に判定したかったのですが、
windows11と10では同じバージョン(10.0)と判定されてしまい困っております。
11を判定するにはどうしたらよいかご存じの方いらっしゃいましたら宜しくお願い致します。

Partial Class _Default
    Inherits System.Web.UI.Page

    Dim Os As String = ""     
    Dim sUA As String = ""
    
    'ページ読み込み時
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim sb As New StringBuilder()

        'OS情報を取得する
        OsInfo()

        sb.AppendLine("<script type='text/javascript'>")
        sb.AppendLine(" document.writeln('OS情報:"& Os &"<br><br>');")  
        sb.AppendLine("</script>")
        
        ClientScript.RegisterStartupScript(Me.GetType(), "script", sb.ToString())

        

        'Osに取得されたバージョン別に以下で処理を分ける



    End Sub

    Sub OsInfo()  	    
        'UserAgent取得
	sUA = Request.ServerVariables("HTTP_USER_AGENT")

        '正規表現パターンとオプションを指定してRegexオブジェクトを作成 
	Dim r As New System.Text.RegularExpressions.Regex( _
		    "Windows\sNT\s([0-9]+\.[0-9])", _
		    System.Text.RegularExpressions.RegexOptions.IgnoreCase Or _
		    System.Text.RegularExpressions.RegexOptions.Singleline)

	'Windows NT x.x部分抽出
	Dim m As Match = r.Match(sUA)
                
        'ver部分抽出
        Dim ver As String =  m.Groups(1).ToString 
        
        Select Case ver
  	Case "6.1"
            'Windows7
            Os = "Windows 7"
  	Case "6.2"
  	    Os = "Windows 8"
  	Case "6.3"
  	    Os = "Windows 8.1"
  	Case "10.0"
            'Windows10
            Os = "Windows 10"
  	Case Else  				
            Os = "NG"
        End Select
                        
    End Sub



End Class

返信 編集キー/


管理者用

- Child Tree -