На компьютере может быть несколько версий Office.
Но вы можете узнать, установлен ли на компьютере Office 365, что-то вроде этого:
using Microsoft.Win32;
...
private bool Has365Office()
{
RegistryView registryView = RegistryView.Registry32;
string registryKey = "Software\Microsoft\Office\16.0\Common\Licensing\LicensingNext";
using (RegistryKey key = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, registryView).OpenSubKey(registryKey))
{
foreach (string subkeyName in key.GetValueNames())
{
if (subkeyName.Contains("o365"))
return true;
}
}
return false;
}
...
Чтобы узнать, какая версия работает, или, по крайней мере, будет работать, когда пользователь откроет его, вы можете сделать что-то вроде этого:
using Microsoft.Office.Interop;
...
public string GetOfficeVersion()
{
string sVersion = string.Empty;
Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();
appVersion.Visible = false;
switch (appVersion.Version.ToString())
{
case "7.0":
sVersion = "95";
break;
case "8.0":
sVersion = "97";
break;
case "9.0":
sVersion = "2000";
break;
case "10.0":
sVersion = "2002";
break;
case "11.0":
sVersion = "2003";
break;
case "12.0":
sVersion = "2007";
break;
case "14.0":
sVersion = "2010";
break;
case "16.0":
sVersion = "2016 or 2019 or 365";
break;
default:
sVersion = "Too Old!";
break;
}
return sVersion;
}
Вы можете комбинировать код выше, чтобы получить то, что вам нужно. Я надеюсь, что это поможет!
оба кода были сделаны из этого ответа: ссылка