运行时C#知道是否正在使用32位或64位版本的COM接口

我想构建一个DLL类库,使用COM Interop,使用C#,目标ANY CPU,并将其注册为32位和64位接口。

我希望能够在运行时显示使用的接口 – 如果我使用的是32位版本或64位版本。

有任何想法吗?

为了使进程加载32位DLL,进程必须是32位。 对于64位也一样。 因此,要找出已加载的内容,假设它已经有效,您只需要找出CLR的位数:

if (System.IntPtr.Size == 8) { // 64-bit } else { // 32-bit } 

PS。 讨论是否需要检查16的大小,请参阅我对这个问题的回答 。

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

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

如果您使用的是.Net 4.0,那么它是当前流程的单行程序:

Environment.Is64BitProcess

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