以编程方式获取MS Office ApplicationID

时间:2016-02-12 08:40:13

标签: c# c++ vba ms-office office-automation

我的Microsoft Office 2013安装具有我需要以编程方式获取的ApplicationId值 (0ff1ce15-a989-479d-af46-f275c6370663。对于MS Office 2010安装,它是59a52881-a989-479d-af46-f275c6370663) 所以最终我有两个问题:

  1. 这些值在不同PC上的相同MS Office版本中是否相同?
  2. 如何以编程方式在C ++中获取2007-2016的这些值? (通过自动化或其他方式)。
  3. 提前谢谢。

1 个答案:

答案 0 :(得分:0)

正在寻找另一个答案,以为我会回复,是的,它们在不同的机器上是相同的,虽然每个办公室版本都会拥有它自己的唯一ID,如你所知。

我正在使用c#并使用WMI查询来查找SoftwareLicensingProduct类中的详细信息,尽管它也可以在OfficeSoftwareProtectionProduct中找到,下面是我的查询

"SELECT ID, ApplicationId, PartialProductKey, Name, ProductKeyID FROM SoftwareLicensingProduct  WHERE ApplicationId = '" + sApplicationId+"' AND PartialProductKey <> NULL"

我之前运行的代码标识了工作站上的office版本,该查询的结果将设置相关的ApplicationID

            if (sVersion == "2013")
        {
             sApplicationId = "Office 15 Application ID";

        }
        else if (sVersion == "2016")
        {
             sApplicationId = "Office 16 Application ID";
        }

要获取包装盒上的Office版本,您可以解析注册表或不确定是否可以在c ++中执行此操作我启动Word隐藏并检索应用程序版本然后使用Case语句

            switch (appVersion.Version.ToString())
        {
            case "15.0":
                sVersion = "2013";
                break;
            case "16.0":
                sVersion = "2016";
                break;
            case "14.0":
                sVersion = "2010";
                break;
            default:
                sVersion = "No Version detected!";
                break;
        }

我知道我可以进一步自动化这个并从WMI查询中提取ApplicationID但是还没有完成。

不确定这是否有帮助?

百里