vence tengo saber que original office mac licencia esta cuando como caduca activado c# excel .net-3.5 ms-office

c# - tengo - ¿Cómo detectar la versión instalada de MS-Office?



como saber si mi office 2016 esta activado en mac (8)

¿Alguien sabe cuál sería la mejor manera de detectar qué versión de Office está instalada? Además, si hay varias versiones de Office instaladas, me gustaría saber qué versiones son. Una bonificación sería si puedo detectar las versiones específicas de Excel que están (/ están) instaladas.


Una bonificación sería si puedo detectar las versiones específicas de Excel que están (/ están) instaladas.

Sé que la pregunta ha sido hecha y respondida hace mucho tiempo, pero esta misma pregunta me ha mantenido ocupado hasta que hice esta observación:

Para obtener el número de compilación (por ejemplo, 15.0.4569.1506 ), 15.0.4569.1506 HKLM/SOFTWARE/Microsoft/Office/[VER]/Common/ProductVersion::LastProduct , donde [VER] es el número de versión principal (12.0 para Office 2007, 14.0 para Office 2010, 15.0 para Office 2013).

En un Windows de 64 bits, debe insertar Wow6432Node entre el SOFTWARE y las migas de Microsoft , independientemente de la fragilidad de la instalación de Office.

En mis máquinas, esto proporciona la información de la versión original instalada. Para Office 2010, por ejemplo, los números coinciden con los enumerados here , y difieren de la versión informada en File > Help , que refleja los parches aplicados por las revisiones.


¿Por qué no comprobar HKLM//SOFTWARE//Microsoft//Windows//CurrentVersion//App Paths//[office.exe] , donde [office.exe] representa el producto de oficina particular exe-filename, por ejemplo, winword.exe , excel.exe etc. excel.exe ruta al ejecutable y verificas la versión de ese archivo.

Cómo verificar la versión del archivo: en C ++ / in C#

Cualquier crítica hacia tal enfoque?


¿Qué hay de HKEY_CLASSES_ROOT / Word.Application / CurVer?



Si instaló Office de 32 bits en un equipo de 64 bits, es posible que deba verificar la presencia de "SOFTWARE / Wow6432Node / Microsoft / Office / 12.0 /", sustituyendo el 12.0 por la versión adecuada. Este es sin duda el caso de Office 2007 instalado en Windows 7 de 64 bits.

Tenga en cuenta que Office 2010 (== 14.0) es la primera Office para la que existe una versión de 64 bits.


Una forma de verificar la versión de Office instalada sería verificar las InstallRoot registro de InstallRoot para las aplicaciones de Office de interés.

Por ejemplo, si desea comprobar si está instalado Word 2007, debe verificar la presencia de la siguiente clave de registro:

HKLM/Software/Microsoft/Office/12.0/Word/InstallRoot::Path

Esta entrada contiene la ruta al ejecutable.

Reemplace 12.0 (para Office 2007) con el número de versión correspondiente:

Office 97 - 7.0 Office 98 - 8.0 Office 2000 - 9.0 Office XP - 10.0 Office 2003 - 11.0 Office 2007 - 12.0 Office 2010 - 14.0 (sic!) Office 2013 - 15.0 Office 2016 - 16.0

Las otras aplicaciones tienen teclas similares:

HKLM/Software/Microsoft/Office/12.0/Excel/InstallRoot::Path HKLM/Software/Microsoft/Office/12.0/PowerPoint/InstallRoot::Path

O puede verificar la ruta raíz común de todas las aplicaciones:

HKLM/Software/Microsoft/Office/12.0/Common/InstallRoot::Path

Otra opción, sin usar claves de registro específicas, sería consultar la base de datos MSI utilizando la API MSIEnumProducts como se describe here .

Por otro lado, las instalaciones paralelas de diferentes versiones de Office no son oficialmente compatibles con Microsoft. Funcionan de alguna manera, pero puede tener efectos e incoherencias no deseados.


public string WinWordVersion { get { string _version = string.Empty; Word.Application WinWord = new Word.Application(); switch (WinWord.Version.ToString()) { case "7.0": _version = "95"; break; case "8.0": _version = "97"; break; case "9.0": _version = "2000"; break; case "10.0": _version = "2002"; break; case "11.0": _version = "2003"; break; case "12.0": _version = "2007"; break; case "14.0": _version = "2010"; break; case "15.0": _version = "2013"; break; case "16.0": _version = "2016"; break; default: break; } return WinWord.Caption + " " + _version; } }


namespace Software_Info_v1._0 { using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop; public class MS_Office { 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; default: sVersion = "Too Old!"; break; } Console.WriteLine("MS office version: " + sVersion); return null; } } }