【问题标题】:VSTO Excel add-in not loading on terminal serverVSTO Excel 加载项未在终端服务器上加载
【发布时间】:2009-11-19 07:01:48
【问题描述】:

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

【问题讨论】:

    标签: vsto terminal excel-2003


    【解决方案1】:

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

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

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

    【讨论】:

    • 它变得混乱不是吗?在 32 位操作系统/32 位办公室上,您需要 HKLM\Software\Microsoft\Office\12.0\Common\General 。 64 位操作系统/64 位办公室也是如此。但是对于 64 位操作系统/32 位 Office,Ray 是正确的 - 因为注册表重定向
    【解决方案2】:

    没关系,我发现我毕竟丢失了一些注册表项。现在可以使用了。

    对于正在寻找类似问题的答案的任何人,为所有用户加载 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-10
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多