在.NET 2.0 C#应用程序中,我使用以下代码来检测操作系统平台:
string os_platform = System.Environment.OSVersion.Platform.ToString();
这将返回"Win32NT".问题是,即使在Windows Vista 64位上运行,它也会返回"Win32NT".
有没有其他方法可以知道正确的平台(32或64位)?
请注意,在Windows 64位上作为32位应用程序运行时,它还应检测64位.
如何判断我的应用程序(在Visual Studio 2008中作为任何CPU编译)是作为32位还是64位应用程序运行?
你好
我在c#(Framework 3.5 SP1)中有一个应用程序,我需要在运行时加载一个非托管程序集,但有两个不同的版本,一个用于x86,另一个用于x64,所以我需要在运行时知道哪个模式是应用运行
我已经看过这个POST但是它适用于C++,在C#中有更简单的方法吗?或者我怎样才能在C#中做到这一点?
谢谢
在C++中有预定义的宏:
#if defined(_M_X64) || defined(__amd64__)
    // Building for 64bit target
    const unsigned long MaxGulpSize = 1048576 * 128;// megabyte = 1048576;
    const unsigned long MaxRecsCopy = 1048576 * 16;
#else
    const unsigned long MaxGulpSize = 1048576 * 8;// megabyte = 1048576;
    const unsigned long MaxRecsCopy = 1048576;
#endif
这允许我设置常量来控制将使用的内存量.
当然我可以逐字定义预处理器变量:
#define Is64bit 1
using System;
using System.Collections.Generic;
-后来-
#if Is64bit
    // Building for 64bit target
    const long MaxGulpSize = 1048576 * 128;// megabyte = 1048576;
    const long MaxRecsCopy = 1048576 …我试过了:
process.MainModule.FileName.Contains("x86")
但它引发了x64进程的异常:
Win32Exception:只有部分ReadProcessMemory ou WriteProcessMemory请求完成
我想构建一个DLL类库使用COM Interop,使用C#,目标ANY CPU,并将其注册为32位和64位接口.
我希望能够在运行时显示使用的接口 - 如果我使用的是32位版本或64位版本.
有任何想法吗?