1

是否可以使用在 kernel32.dll 中定义的getBinaryType()函数来获取 Office 2010的位数。

[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位数吗?

4

1 回答 1

1

我会做的是

1)打开以下注册表项:

HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\LocalServer

(该指南的意思是“Excel 应用程序”)

2) 从键的默认值中提取 Excel 的 .EXE 路径(您要删除所有命令行参数)

3)GetBinaryType在路径上使用。

于 2012-10-19T13:48:28.090 回答