vez solucion responde reparar que programa professional produjo problema plus online office microsoft finalizado enviar correctamente configuracion configura comando cada abro abre c# .net ms-office

solucion - C#: ¿Cómo saber si cierta aplicación de Office 2003 o 2007 está instalada?



word no abre (2)

Esto debería funcionar, como se describe aquí . No es una solución muy elegante, ya que es específica de la versión y se romperá con la próxima versión de la oficina. Este ejemplo es para Office 2003, por lo que no funcionará con Office 2007 sin actualizar.

const string ASSEMBLY2003 = "Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"; static bool IsAssemblyInstalled(string assembly) { try { s_assemblyExcel = Assembly.Load(assembly); return true; } catch { return false; } }

Necesito saber si Microsoft Word, Excel, Outlook, Project, etc. están instalados en una aplicación Windows Forms .net 2.0 C #.
El primer intento fue simplemente intentar crear los objetos de la aplicación y detectar cualquier excepción, pero esto lleva demasiado tiempo.
¿Hay alguna forma más rápida de detectar esto? ¿Como verificar valores de registro u otra técnica con los contenedores COM?


Puede usar las API de MSI (Windows Installer) para averiguar si los códigos relevantes de producto / paquete / componente están presentes en la máquina. Estos son bastante simples de usar a través de P / Invoke.

Alternativamente, puede buscar en el registro. Word 2007, por ejemplo, coloca su ubicación de instalación en HKLM/SOFTWARE/Microsoft/Office/12.0/Word/InstallRoot .

Esto no lo ayudará si planea usar los componentes de interoperabilidad, pero le informa, con razonable certeza, si las diversas cosas están instaladas.