Среда выполнения C #, зная, используется ли 32-битная или 64-битная версия COM-интерфейса - PullRequest
3 голосов
/ 16 декабря 2008

Я хочу создать библиотеку классов DLL с использованием COM Interop, с C #, целевым ЛЮБОМ ЦП и зарегистрировать его как 32-битный и 64-битный интерфейсы.

Я хочу иметь возможность во время выполнения отображать, какой интерфейс использовался - если я использую 32-битную или 64-битную версию.

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 16 декабря 2008

Чтобы процесс мог загрузить 32-битную DLL, он должен быть 32-битным. И то же самое для 64-битных. Таким образом, чтобы узнать, что было загружено, предполагая, что оно уже работает, вам просто нужно выяснить разрядность CLR:

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

PS. для обсуждения необходимости проверки размера 16 см. мой ответ на этот вопрос .

0 голосов
/ 04 декабря 2013

и снова, как насчет 32-битных процессов, работающих на win64?

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

Если вы используете .Net 4.0, это однострочный для текущего процесса:

Environment.Is64BitProcess

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

...