运行时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

+0

你可以只说,如果(IntPtr.Size == 8) – Sean 2008-12-16 17:51:47

再说一次,在win64上运行的32位进程呢?

https://stackoverflow.com/a/3461562/1498669

如果你使用.NET 4.0,这是一个班轮当前进程:

Environment.Is64BitProcess

http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx