Обнаружение, если Office 365 установлен - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно программно определить, установлен ли Microsoft Excel 2016 (обычный Office) или Microsoft Excel (Office 365).

Обнаружение Microsoft Excel 2016 (обычная версия Office) не представляет проблемы, но работает нормально, но обнаружение Excel Office 365 немного сложнее.

Что я делаю сейчас:

  • Я проверяю, есть ли ключ реестра HKEY_CLASSES_ROOT\.xlsmm\OpenWithProgids
  • затем я перечисляю значения в этом ключе (обычно есть только одно значение в форме "AppXdns5t4sbk....")
  • для каждого из этих значений я открываю ключ "HKEY_CLASSES_ROOT \\ Application" и проверяю, является ли значение ApplicationName "Excel", и если да, я полагаю, установлен Excel Office 365.

Это довольно глупо, и если кто-нибудь знает более чистый способ, я был бы рад узнать об этом.

Edit:

Причина, по которой мне это нужно:

Мое программное обеспечение позволяет пользователю создать файл Excel (используя стороннюю библиотеку), а затем просмотреть этот файл в Excel. После обработки и

  1. Когда я просто пытаюсь открыть файл .xls с ShellExecuteEx, а Excel не установлен, появляется стандартное окно Windows 10 «Как открыть этот файл».

  2. Даже если ShellExecuteEx вернуло сообщение об ошибке вместо всплывающего диалогового окна Windows 10 (как описано выше), это поведение не совсем то, что я хочу, потому что генерация файла .xls довольно длинная и может произойти следующее: пользователь выполняет команду, которая генерирует файл Excel, это занимает 10-15 секунд, а затем появляется сообщение об ошибке, в котором говорится, что Excel не установлен. Я бы предпочел заранее сообщить пользователю, что нужно установить Excel.

1 Ответ

1 голос
/ 07 марта 2019

Я бы рекомендовал вместо этого проверить, содержит ли какой-либо из DisplayName, расположенных в пути HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, Microsoft Office 365.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...