how do I detect user operating system how do I detect user operating system asp.net asp.net

how do I detect user operating system


Here's what I came up with and it seems to work fairly well:

public String GetUserEnvironment(HttpRequest request){    var browser = request.Browser;    var platform = GetUserPlatform(request);    return string.Format("{0} {1} / {2}", browser.Browser, browser.Version, platform);}public String GetUserPlatform(HttpRequest request){    var ua = request.UserAgent;    if (ua.Contains("Android"))        return string.Format("Android {0}", GetMobileVersion(ua, "Android"));    if (ua.Contains("iPad"))        return string.Format("iPad OS {0}", GetMobileVersion(ua, "OS"));    if (ua.Contains("iPhone"))        return string.Format("iPhone OS {0}", GetMobileVersion(ua, "OS"));    if (ua.Contains("Linux") && ua.Contains("KFAPWI"))        return "Kindle Fire";    if (ua.Contains("RIM Tablet") || (ua.Contains("BB") && ua.Contains("Mobile")))        return "Black Berry";    if (ua.Contains("Windows Phone"))        return string.Format("Windows Phone {0}", GetMobileVersion(ua, "Windows Phone"));    if (ua.Contains("Mac OS"))        return "Mac OS";    if (ua.Contains("Windows NT 5.1") || ua.Contains("Windows NT 5.2"))        return "Windows XP";    if (ua.Contains("Windows NT 6.0"))        return "Windows Vista";    if (ua.Contains("Windows NT 6.1"))        return "Windows 7";    if (ua.Contains("Windows NT 6.2"))        return "Windows 8";    if (ua.Contains("Windows NT 6.3"))        return "Windows 8.1";    if (ua.Contains("Windows NT 10"))        return "Windows 10";    //fallback to basic platform:    return request.Browser.Platform + (ua.Contains("Mobile") ? " Mobile " : "");}public String GetMobileVersion(string userAgent, string device){    var temp = userAgent.Substring(userAgent.IndexOf(device) + device.Length).TrimStart();    var version = string.Empty;    foreach (var character in temp)    {        var validCharacter = false;        int test = 0;        if (Int32.TryParse(character.ToString(), out test))        {            version += character;            validCharacter = true;        }        if (character == '.' || character == '_')        {            version += '.';            validCharacter = true;        }        if (validCharacter == false)            break;    }    return version;}


Use Request.UserAgent

if (Request.UserAgent.IndexOf("Windows NT 5.1") > 0){//xp}else if (Request.UserAgent.IndexOf("Windows NT 6.0") > 0){//VISTA}else if (Request.UserAgent.IndexOf("Windows NT 6.1") > 0){//7}else if (Request.UserAgent.IndexOf("Windows NT 6.2") > 0) { //8}else if (Request.UserAgent.IndexOf("Windows NT 6.3") > 0) { //8.1}else if (Request.UserAgent.IndexOf("Windows NT 10.0") > 0) { //10}


According to This Official Microsoft Document we can use this to detect Windows OS:

String userAgent = Request.UserAgent;if (userAgent.IndexOf("Windows NT 6.3") > 0){    //Windows 8.1}else if (userAgent.IndexOf("Windows NT 6.2") > 0){    //Windows 8}else if (userAgent.IndexOf("Windows NT 6.1") > 0){    //Windows 7}else if (userAgent.IndexOf("Windows NT 6.0") > 0) {     //Windows Vista}else if (userAgent.IndexOf("Windows NT 5.2") > 0) {     //Windows Server 2003; Windows XP x64 Edition}else if (userAgent.IndexOf("Windows NT 5.1") > 0) {     //Windows XP}else if (userAgent.IndexOf("Windows NT 5.01") > 0) {     //Windows 2000, Service Pack 1 (SP1)}else if (userAgent.IndexOf("Windows NT 5.0") > 0) {     //Windows 2000}else if (userAgent.IndexOf("Windows NT 4.0") > 0) {     //Microsoft Windows NT 4.0}else if (userAgent.IndexOf("Win 9x 4.90") > 0) {     //Windows Millennium Edition (Windows Me)}else if (userAgent.IndexOf("Windows 98") > 0) {     //Windows 98}else if (userAgent.IndexOf("Windows 95") > 0) {     //Windows 95}else if (userAgent.IndexOf("Windows CE") > 0) {     //Windows CE}else{     //Others}