如何检查客户端计算机是否正在运行32位或64位操作系统

时间:2011-05-11 08:44:22

标签: c# .net asp.net asp.net-3.5 32bit-64bit

如何检查客户端计算机是否在ASP.NET 3.5中运行32位或64位操作系统?

5 个答案:

答案 0 :(得分:4)

无法可靠地确定客户端是运行64位操作系统还是32位操作系统。如果客户端根本不是一台完整的计算机怎么办?

如果不在客户端上运行任何特定于平台的代码,您所能做的就是信任浏览器传递的用户代理字符串。某些浏览器(如Internet Explorer)实际上会在用户代理字符串中发送此线索。

例如,64位IE将发送“Win64; x64”作为用户代理字符串的一部分,在64位版本的Windows上运行的32位IE将发送“WOW64”作为其一部分。

答案 1 :(得分:2)

这应该有效:

System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")

还有其他原生Win32 API可以确定相同的内容:

http://msdn.microsoft.com/en-us/library/aa394373%28VS.85%29.aspx

答案 2 :(得分:1)

结帐Environment.Is64BitOperatingSystem

如果操作系统是64位,它将返回true;否则,错误。

答案 3 :(得分:0)

您可以查看用户代理以查看运行客户端的操作系统/体系结构,但可以修改用户代理,因此不是100%可靠的来源。

看看http://whatsmyuseragent.com/看看你的是什么,我的正在展示WOW64:

  

Mozilla / 5.0(Windows NT 6.1; WOW64)   AppleWebKit / 534.24(KHTML,和Gecko一样)   Chrome / 11.0.696.65 Safari / 534.24

除此之外,您可能必须在客户端上运行一些脚本以确定它是什么 - 寻找环境“PROCESSOR_ARCHITECTURE”,您再次依赖于存在的变量;在潜在的沙盒环境中,broswer(或app)可能不希望您看到许多环境变量。

确定OS 32/64位架构的原因是什么?

答案 4 :(得分:0)

您可以尝试首先显示ASP.NET的服务器变量,如下所示:

       if (!IsPostBack) {
            int loop1, loop2;
            NameValueCollection coll;

            // Load ServerVariable collection into NameValueCollection object.
            coll = Request.ServerVariables;
            // Get names of all keys into a string array. 
            String[] arr1 = coll.AllKeys;
            for (loop1 = 0; loop1 < arr1.Length; loop1++) {
                Response.Write("Key: " + arr1[loop1] + "<br>");
                String[] arr2 = coll.GetValues(arr1[loop1]);
                for (loop2 = 0; loop2 < arr2.Length; loop2++) {
                    Response.Write("Value " + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
                }
            }
        }

之后,您可以检查HTTP_USER_AGENT值:

  

密钥:HTTP_USER_AGENT   值0:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64 ; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0。 30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2; Zune 4.7; AskTbFXTV5 / 5.11.3.15590)

根据 link ,表示:

  

(Windows-On-Windows 64位)32位应用程序在64位处理器上运行