VSTO Excel надстройка не загружается на терминальный сервер - PullRequest
1 голос
/ 19 ноября 2009

Моя конфигурация - Windows Server 2003 (я вошел в систему с правами администратора), Office 2003, VTSO Runtime 2005 SE. После установки моего надстройки все разделы реестра находятся в правильных местах, и я дал полное доверие к моей сборке, используя caspol.exe. Мой плагин является надстройкой уровня приложения.

Когда я запускаю Excel с помощью regmon и filemon, я вижу, что excel считывает ключи реестра моего надстройки, но я не вижу, как AddinLoader.dll загружается в filemon. Я не получаю ошибок от VSTO, так как не кажется, что время выполнения даже запускается. Я прочитал почти все документацию vsto на msdn, в частности, архитектуру надстройки приложений и обзор среды выполнения vsto, а также различные другие статьи и обсуждения по этой теме. Я до сих пор не могу понять, почему среда выполнения не загружается на сервере терминалов.

При установке на компьютер с XP все работает нормально, и мой аддин загружается каждый раз.

Кто-нибудь знает, что может помешать загрузке среды выполнения vsto?

Ответы [ 2 ]

1 голос
/ 26 января 2012

У меня была похожая проблема с Outlook 2007 на 64-битной Windows. Я добавил этот ключ reg, и он заработал:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Office \ 12.0 \ Common \ General] "EnableLocalMachineVSTO" = DWORD: 00000001

Не забудьте обновить Office 2007 до последнего пакета обновления (на данный момент 3)

0 голосов
/ 20 ноября 2009

Не важно, я обнаружил, что в конце концов мне не хватало некоторых ключей реестра. Теперь все работает.

Для всех, кто ищет ответ на аналогичную проблему, ключи реестра, необходимые для загрузки надстройки VSTO 2003 для всех пользователей, должны выглядеть примерно так:

[HKEY_CLASSES_ROOT\CLSID\{MY-EXCEL-ADDIN-GUID}]
@="MyExcelAddin -- an addin created with VSTO technology"

[HKEY_CLASSES_ROOT\CLSID\{MY-EXCEL-ADDIN-GUID}\InprocServer32]
@="Is vsdrvtEnvironmentString value type with "%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll" as its value"
"ManifestLocation"="C:\\Path\\To\\MyExcelAddin\\"
"ManifestName"="MyExcelAddin.dll.manifest"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{MY-EXCEL-ADDIN-GUID}\ProgID]
@="MyExcelAddin"

[HKEY_CLASSES_ROOT\CLSID\{MY-EXCEL-ADDIN-GUID}\Programmable]

[HKEY_CLASSES_ROOT\CLSID\{MY-EXCEL-ADDIN-GUID}\VersionIndependentProgID]
@="MyExcelAddin"

[HKEY_CLASSES_ROOT\MyExcelAddin]
@=""

[HKEY_CLASSES_ROOT\MyExcelAddin\CLSID]
@="{MY-EXCEL-ADDIN-GUID}"

[HKEY_CURRENT_USER\Software\Classes\MyExcelAddin]
@=""

[HKEY_CURRENT_USER\Software\Classes\MyExcelAddin\CLSID]
@="{MY-EXCEL-ADDIN-GUID}"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{MY-EXCEL-ADDIN-GUID}]
@="MyExcelAddin -- an addin created with VSTO technology"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{MY-EXCEL-ADDIN-GUID}\InprocServer32]
"ThreadingModel"="Both"
@="Is vsdrvtEnvironmentString value type with "%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll" as its value"
"ManifestLocation"="C:\\Path\\To\\MyExcelAddin\\"
"ManifestName"="MyExcelAddin.dll.manifest"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{MY-EXCEL-ADDIN-GUID}\ProgID]
@="MyExcelAddin"

[HKEY_CURRENT_USER\Software\Classes\CLSID\{MY-EXCEL-ADDIN-GUID}\Programmable]

[HKEY_CURRENT_USER\Software\Classes\CLSID\{MY-EXCEL-ADDIN-GUID}\VersionIndependentProgID]
@="MyExcelAddin"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Excel\Addins\MyExcelAddin]
"Description"="MyExcelAddin -- an addin created with VSTO technology"
"LoadBehavior"=dword:00000003
"FriendlyName"="MyExcelAddin"
"CommandLineSafe"=dword:00000001

Конечно, вам нужно изменить GUID и пути к соответствующим значениям. Поместив ключи надстройки на локальный компьютер вместо текущего пользователя, надстройка будет работать для всех пользователей без необходимости восстанавливать установку после первого запуска Excel. Кроме того, это только позволяет офисному приложению узнать, что надстройка существует, и что оно должно попытаться загрузить его, это не дает доверия сборке в системе, вам нужно использовать Caspol.exe для этого. Прочтите статью MSDN о SetSecurty, чтобы сделать это http://msdn.microsoft.com/en-us/library/bb332052.aspx.

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