是否可以使用 getBinaryType()函数获取office 2010位数,该函数在kernel32.dll中定义,如下所示。
[DllImport("kernel32.dll")]
static extern bool GetBinaryType(string lpApplicationName, out uint lpBinaryType);
uint type;
GetBinaryType("applicationName",out type);
我已尝试使用如下所述的应用程序类,但有时会失败。
public static ExcelVersion GetExcelVersion(object applicationClass)
{
if (applicationClass == null)
throw new ArgumentNullException("applicationClass");
PropertyInfo property = applicationClass.GetType().GetProperty("HinstancePtr", BindingFlags.Instance | BindingFlags.Public);
if (property == null)
return ExcelVersion.Excel;
return (System.Runtime.InteropServices.Marshal.SizeOf(property.GetValue(applicationClass, null)) == 8) ? ExcelVersion.Excel2010_64 : ExcelVersion.Excel2010_32;
}
还有其他方法可以检测 office 2010 位数吗?
答案 0 :(得分:1)
我会做的是
1)打开以下注册表项:
HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer
(guid表示“Excel申请”)
2)从密钥的默认值中提取Excel的.EXE路径(您要删除所有命令行参数)
3)在路径上使用GetBinaryType
。