在.NET 2.0 C#应用程序中,我使用以下代码来检测操作系统平台:
string os_platform = System.Environment.OSVersion.Platform.ToString();
Run Code Online (Sandbox Code Playgroud)
这将返回"Win32NT".问题是,即使在Windows Vista 64位上运行,它也会返回"Win32NT".
有没有其他方法可以知道正确的平台(32或64位)?
请注意,在Windows 64位上作为32位应用程序运行时,它还应检测64位.
我想检测当前的Windows操作系统是32位还是64位.如何使用C++实现它?我不想要处理器类型我想要OS的位类型.这是因为您可以在64位处理器上安装32位操作系统.
我正在尝试检索环境变量以检测系统是32位还是64位.但是在64位服务器上,环境变量%processor_architecture%正在返回x86而不是AMD64.
有没有人对此有任何线索?
我正在开发一个软件应用程序来检查你安装了哪种软件,但为了做到这一点,我必须知道操作系统是32位还是64位操作系统.我试过System.getProperty("os.arch"); 但后来我读到这个命令只向我们展示了JDK/JRE的位,而不是操作系统本身.如果你能告诉我如何知道操作系统的使用(Windows 7,Mac OS,Ubuntu等等),那将简直太棒了C:
有没有人知道如何创建一个批处理文件,如果它是一个64位系统,可以shell一个程序,如果它是一个32位系统,那么它是另一个程序?
使用Perl,如何确定我的程序是在32位Windows还是64位Windows上运行?
有没有可用的API?
我可以想到几个选择..
检查一些Windows文件的PE_HEADER(例如:) c:\windows\explorer.exe- 也许我可以使用详细信息如何测试windows dll以确定它是32位还是64位?
检查是否存在c:\program files(x86)- 如果存在则则为64位操作系统.否则它是一个32位Windows操作系统.
这样做有什么好办法吗?Perl中可用的任何API?
是否有Windows API调用会告诉我我是否在64位操作系统上运行?我有一些遗留的c ++代码调用GetVersionEx来填充OSVERSIONINFO结构,但这只能告诉我(AFAIK)OS(Vista,V7等),而不是处理架构.我可以通过简单地查找"C:\ Program Files(x86)..."的存在来解决这个问题,但这看起来很难看.我确信必须有一个API来返回此信息.
我需要检测应用程序是否在Win32/64上运行.
更新:人们报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键并不是一个好主意.
以及64位操作系统的32位操作系统?是否有一些#ifdef我可以用来检测实际的OS版本以及它是32位还是64位?
windows ×6
32bit-64bit ×3
64-bit ×2
batch-file ×2
winapi ×2
.net-2.0 ×1
c ×1
c# ×1
c++ ×1
command-line ×1
delphi ×1
delphi-xe7 ×1
java ×1
perl ×1
shell ×1