如何检查客户端计算机是否在ASP.NET 3.5中运行32位或64位操作系统?
答案 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位处理器上运行