运行时C#知道是否正在使用32位或64位版本的COM接口
问题描述:
我想建立一个DLL类库使用COM Interop和C#,目标ANY CPU,并将其注册为32位和64位版本,位接口。运行时C#知道是否正在使用32位或64位版本的COM接口
我希望能够在运行时显示使用什么接口 - 如果我使用的是32位版本或64位版本。
任何想法?
答
为了使进程加载32位DLL,进程必须是32位。和64位相同。因此,要找出已经被加载,假设它已经工作,你只需要找出CLR的位岬:
if (System.IntPtr.Size == 8)
{
// 64-bit
}
else
{
// 32-bit
}
PS。有关您是否需要检查大小为16的讨论,请参见my answer to this question。
答
再说一次,在win64上运行的32位进程呢?
https://stackoverflow.com/a/3461562/1498669
如果你使用.NET 4.0,这是一个班轮当前进程:
Environment.Is64BitProcess
http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx
你可以只说,如果(IntPtr.Size == 8) – Sean 2008-12-16 17:51:47