| ■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
|
|