how do I detect user operating system

前端 未结 11 933
难免孤独
难免孤独 2020-12-01 03:58

I have the following code to obtain user details:

HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
string UserAgent = HttpContext.Current.Re         


        
11条回答
  •  旧时难觅i
    2020-12-01 04:27

    The VB.NET answer: I include it only because it might be easier to read and understand.

    Public Function GetOS() As String
        Dim MyAgent As String = Current.Request.UserAgent
        If MyAgent.IndexOf("Windows NT 10.0") >= 0 Then
            Return "Windows 10"
        ElseIf MyAgent.IndexOf("Windows NT 6.3") >= 0 Then
            Return "Windows 8.1"
        ElseIf MyAgent.IndexOf("Windows NT 6.2") >= 0 Then
            Return "Windows 8"
        ElseIf MyAgent.IndexOf("Windows NT 6.1") >= 0 Then
            Return "Windows 7"
        ElseIf MyAgent.IndexOf("Windows NT 6.0") >= 0 Then
            Return "Windows Vista"
        ElseIf MyAgent.IndexOf("Windows NT 5.2") >= 0 Then
            Return "Windows Server 2003"
        ElseIf MyAgent.IndexOf("Windows NT 5.1") >= 0 Then
            Return "Windows XP"
        ElseIf MyAgent.IndexOf("Windows NT 5.01") >= 0 Then
            Return "Windows 2000 (SP1)"
        ElseIf MyAgent.IndexOf("Windows NT 5.0") >= 0 Then
            Return "Windows 2000"
        ElseIf MyAgent.IndexOf("Windows NT 4.5") >= 0 Then
            Return "Windows NT 4.5"
        ElseIf MyAgent.IndexOf("Windows NT 4.0") >= 0 Then
            Return "Windows NT 4.0"
        ElseIf MyAgent.IndexOf("Win 9x 4.90") >= 0 Then
            Return "Windows ME"
        ElseIf MyAgent.IndexOf("Windows 98") >= 0 Then
            Return "Windows 98"
        ElseIf MyAgent.IndexOf("Windows 95") >= 0 Then
            Return "Windows 95"
        ElseIf MyAgent.IndexOf("Windows CE") >= 0 Then
            Return "Windows CE"
        ElseIf (MyAgent.Contains("iPad")) Then
            Return String.Format("iPad OS {0}", GetMobileVersion(MyAgent, "OS"))
        ElseIf (MyAgent.Contains("iPhone")) Then
            Return String.Format("iPhone OS {0}", GetMobileVersion(MyAgent, "OS"))
        ElseIf (MyAgent.Contains("Linux") AndAlso MyAgent.Contains("KFAPWI")) Then
            Return "Kindle Fire"
        ElseIf (MyAgent.Contains("RIM Tablet") OrElse (MyAgent.Contains("BB") AndAlso MyAgent.Contains("Mobile"))) Then
            Return "Black Berry"
        ElseIf (MyAgent.Contains("Windows Phone")) Then
            Return String.Format("Windows Phone {0}", GetMobileVersion(MyAgent, "Windows Phone"))
        ElseIf (MyAgent.Contains("Mac OS")) Then
            Return "Mac OS"
        ElseIf MyAgent.IndexOf("ANDROID") >= 0 Then
            Return String.Format("Android {0}", GetMobileVersion(MyAgent, "ANDROID"))
        Else
            Return "OS is unknown."
        End If
    End Function
    
    Private Function GetMobileVersion(userAgent As String, device As String) As String
        Dim ReturnValue As String = String.Empty
        Dim RawVersion As String = userAgent.Substring(userAgent.IndexOf(device) + device.Length).TrimStart()
        For Each character As Char In RawVersion
            If IsNumeric(character) Then
                ReturnValue &= character
            ElseIf (character = "." OrElse character = "_") Then
                ReturnValue &= "."
            Else
                Exit For
            End If
        Next
        Return ReturnValue
    End Function
    

提交回复
热议问题