искал еще один ответ, поэтому подумал, что я бы ответил, да, они одинаковы на разных машинах, хотя каждая версия офиса будет иметь свой собственный уникальный идентификатор, как вы знаете.
Я использую 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";
}
Чтобы получить версию офиса, который находится на коробке можно либо разобрать системный реестр или не уверен, что если вы можете сделать это в C++ я запустил слово скрытых и извлекаться версия приложения затем использовал саз
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, но не обходили к тому, что до сих пор.
Не уверен, что это помогает?
Барри