在C#中,如何通过编程知道操作系统是x64还是x86
在C#中,如何通过编程知道操作系统是x64还是x86 我在互联网上找到了这个API方法,但它不起作用在C#中,如何通过编程知道操作系统是x64还是x86,c#,.net,64-bit,C#,.net,64 Bit,在C#中,如何通过编程知道操作系统是x64还是x86 我在互联网上找到了这个API方法,但它不起作用 [DllImport("kernel32.dll")] public static extern bool IsWow64Process(System.IntPtr hProcess, out bool lpSystemInfo); public static bool IsWow64Process1 { get { bool retVal = false;
[DllImport("kernel32.dll")]
public static extern bool IsWow64Process(System.IntPtr hProcess, out bool lpSystemInfo);
public static bool IsWow64Process1
{
get
{
bool retVal = false;
IsWow64Process(System.Diagnostics.Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
}
提前感谢。看看这个:
我认为您正在寻找System.Environment.OSVersion
boolx86=IntPtr.Size==4代码>如果您基于任何CPU构建,并且运行在64位系统上,那么它将运行在64位版本的框架上。在32位系统上,它将在32位版本的框架上运行。只需检查IntPtr.Size
属性,就可以利用它的优势。如果大小
=4,则运行的是32位,大小
=8,则运行的是64位。以下是源代码,请不要投我的赞成票:)
在.NET4.0中,您可以使用新属性
这就是它的弹劾方式
public static bool Is64BitOperatingSystem
{
[SecuritySafeCritical]
get
{
bool flag;
return ((Win32Native.DoesWin32MethodExist("kernel32.dll", "IsWow64Process") && Win32Native.IsWow64Process(Win32Native.GetCurrentProcess(), out flag)) && flag);
}
}
使用reflector或类似工具查看其工作原理。它返回的错误是什么?您可以发布ISWOW64ProcessAPI的返回值吗?另外,您的.NET DLL是否编译为AnyCPU?另外,请尝试搜索-bing会返回结果。@obelix:没有错误,但我的操作系统版本是64,它返回FalseHoram,如果您编译为AnyCPU,那么您的进程可能是本机64位进程,而不是WoW64。在64位操作系统上,该函数很可能是错误的。您只检查了是否正在模拟您的进程-它可能是本机进程。该进程的可能副本似乎无法回答它是32位还是64位的问题。Environment.Is64BitProcess属性仅在.Net 4.0中受支持,我使用的是3.5,这可能不正确-这将显示您是在32位上运行,还是在64位上的WOW64下运行。它不会给你实际的平台,但会告诉你当前的运行时环境。是的,他们搞砸了。这在.NET4.5中变得更复杂了。默认值现在是“任意CPU(32位首选)”。看见
public static bool Is64BitOperatingSystem
{
[SecuritySafeCritical]
get
{
bool flag;
return ((Win32Native.DoesWin32MethodExist("kernel32.dll", "IsWow64Process") && Win32Native.IsWow64Process(Win32Native.GetCurrentProcess(), out flag)) && flag);
}
}