VSTO Excel加载项未在终端服务器上加载

时间:2009-11-19 07:01:49

标签: vsto terminal excel-2003

我的配置是Windows Server 2003(我以管理员权限登录),office 2003,vtso runtime 2005 se。安装我的插件后,所有注册表项都在正确的位置,并且我已使用caspol.exe对我的程序集进行了完全信任。我的插件是一个应用程序级插件。

当我使用regmon和filemon运行excel时,我可以看到excel读取我的插件的注册表项,但是我没有看到在filemon中加载了AddinLoader.dll。我没有从vsto得到错误,因为它似乎没有运行时甚至启动。我已经阅读了几乎所有关于msdn的vsto doco,特别是应用程序插件架构和vsto运行时概述以及关于该主题的各种其他文章和讨论。我仍然无法弄清楚为什么运行时不会在终端服务器上加载。

在XP机器上安装时,一切正常,每次都会加载我的插件。

任何人都知道可能阻止加载vsto运行时的内容是什么?

2 个答案:

答案 0 :(得分:1)

我在64位Windows上遇到类似的Outlook 2007问题。 我添加了这个reg键然后它工作了:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\办公室\ 12.0 \共同\一般] “EnableLocalMachineVSTO”= DWORD:00000001

请记住将Office 2007更新到最新的Service Pack(截至目前为3)

答案 1 :(得分:0)

没关系我发现我毕竟忘记了一些注册表项。现在就开始工作了。

对于正在寻找类似问题答案的任何人,您需要为所有用户制作2003 VSTO插件加载所需的注册表项应如下所示:

[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和路径更改为适当的值。通过将addin键放在本地计算机而不是当前用户下,addin将适用于所有用户,而无需在首次运行excel后修复安装。此外,这只让办公室应用程序知道addin在那里,并且它需要尝试加载它,这不会给系统中的程序集信任,你需要使用Caspol.exe来做到这一点。阅读有关SetSecurty的msdn文章,以执行此操作http://msdn.microsoft.com/en-us/library/bb332052.aspx