【问题标题】:Get MS Office ApplicationID programmatically以编程方式获取 MS Office ApplicationID
【发布时间】:2016-05-23 08:06:19
【问题描述】:

我的 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 年的这些值? (通过自动化或其他方式)。

提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

    一直在寻找另一个答案,所以我想我会回复,是的,它们在不同的机器上是相同的,尽管如您所知,每个 office 版本都有自己的唯一 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 hidden 并检索应用程序版本,然后使用 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,但尚未解决。

    不确定这是否有帮助?

    巴里

    【讨论】:

      猜你喜欢
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2019-01-28
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多