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

C# 如何检查客户端计算机是否运行32位或64位操作系统,c#,.net,asp.net,asp.net-3.5,32bit-64bit,C#,.net,Asp.net,Asp.net 3.5,32bit 64bit,如何检查客户端计算机在ASP.NET 3.5中是否运行32位或64位操作系统?这应该可以: System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") 还有其他本机Win32 API可以确定相同的值: 无法可靠地确定客户机运行的是64位操作系统还是32位操作系统。如果客户机根本不是一台成熟的计算机怎么办 无需在客户端上运行任何特定于平台的代码,您所能做的就是信任浏览器传递的用户代理字符串。有些浏览器,如Internet

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

这应该可以:

System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
还有其他本机Win32 API可以确定相同的值:


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

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


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

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

看看你的是什么,我的是WOW64:

Mozilla/5.0(Windows NT 6.1;WOW64) AppleWebKit/534.24(KHTML,比如Gecko) Chrome/11.0.696.65 Safari/534.24

除此之外,您可能需要在客户机上运行一些脚本来确定它是什么-寻找您再次依赖于该变量存在的环境“处理器体系结构”;在潜在的沙盒环境中,broswer(或应用程序)可能不希望您看到许多环境变量


确定OS 32/64位体系结构的原因是什么?

您可以尝试先显示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>");
                }
            }
        }
if(!IsPostBack){
int loop1,loop2;
NameValueCollection coll;
//将ServerVariable集合加载到NameValueCollection对象中。
coll=Request.ServerVariables;
//将所有键的名称放入字符串数组。
字符串[]arr1=coll.allkey;
for(loop1=0;loop1”;
字符串[]arr2=coll.GetValues(arr1[loop1]);
for(loop2=0;loop2”;
}
}
}
之后,您可以检查HTTP\u USER\u AGENT值:

密钥:HTTP_用户_代理 值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)

根据这一点,它意味着:

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

结帐


如果操作系统为64位,则返回true;否则为false。

哪台计算机?您的ASP.NET应用程序的服务器还是用户的?他大概是指服务器,如果他在客户端上运行c#,他会将其标记为silverlight。@JonB:事实上,OP提到了客户端computer@abatishchev哦,对我来说太早了(传输到客户端浏览器的只是html文档/Javascripts。AFAIK您无法通过js获取操作系统信息。这将获得服务器端的环境,而不是OP要求的环境。+1抵消否定-公平地说,在发布此答案时,问题没有指定,因此这是一个有效的答案。)在问题被更改之前,虽然不是100%可靠,但客户端可能会伪装/修改用户代理,使其字符串中没有WOW64,甚至在它实际上是32位机器时说它是WOW64。不判断您答案的正确性(甚至看起来您可能是对的)我想说的是,一个词的帖子很少有很大的帮助。至少,提供参考资料等。我不是故意的,我只是想告诉你社区最常从答案中得到什么。这只是.net 4及以上版本。海报限制在3.5以内。