Моя установка Microsoft Office 2013 имеет значение ApplicationId, которое мне нужно получить программно
(это 0ff1ce15-a989-479d-af46-f275c6370663
, Для установки MS Office 2010 это 59a52881-a989-479d-af46-f275c6370663
)
В итоге у меня есть 2 вопроса:
Заранее спасибо.
искал другой ответ, поэтому думал, что я отвечу, да, они одинаковы на разных машинах, хотя у каждой офисной версии будет свой уникальный идентификатор, как вы знаете.
Я использовал c # и использовал WMI-запрос для поиска деталей в классе SoftwareLicensingProduct, хотя он также находится в OfficeSoftwareProtectionProduct ниже, мой запрос
"SELECT ID, ApplicationId, PartialProductKey, Name, ProductKeyID FROM SoftwareLicensingProduct WHERE ApplicationId = '" + sApplicationId+"' AND PartialProductKey <> NULL"
У меня есть код, который выполняется до того, как идентифицирует версию офиса на рабочей станции, и в результате этого запроса будет установлен соответствующий 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;
}
Я знаю, что мог бы, вероятно, автоматизировать это дальше и извлечь ApplicationID из запроса WMI, но пока не дошел до этого.
Не уверен, что это поможет?
Барри
Других решений пока нет …