C# 如何检查客户端计算机是否运行32位或64位操作系统
如何检查客户端计算机在ASP.NET 3.5中是否运行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
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以内。