1

我的配置是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 运行时?

4

2 回答 2

1

我在 64 位 Windows 上使用 Outlook 2007 时遇到了类似的问题。我添加了这个 reg 密钥,然后它起作用了:

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

请记住将 Office 2007 更新到最新的服务包(截至目前为 3 个)

于 2012-01-26T13:31:25.013 回答
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 和路径更改为适当的值。通过将插件密钥放在本地计算机而不是当前用户下,插件将适用于所有用户,而无需在第一次运行 excel 后修复安装。此外,这只会让 Office 应用程序知道插件存在并且它需要尝试加载它,这不会使程序集信任系统,您需要使用 Caspol.exe 来执行此操作。阅读有关 SetSecurty 的 msdn 文章以执行此操作http://msdn.microsoft.com/en-us/library/bb332052.aspx

于 2009-11-20T07:18:24.363 回答