Office加载项(VSTO或COM)中的EncryptionProvider



我遇到了一个问题,无法在Word的VSTO加载项中找到使用Word.Document类的EncryptionProvider属性的正确方法。

每次我尝试为其设置任何值(添加"ProgId"、其他加密提供程序、随机字符串(时,我都会收到OutOfMemoryException。我尝试在addIn类和单独的类中实现Office.EncryptionProvider接口,它的任何方法都无法执行。在我将任何值设置为EncryptionProvider后,VSTO会执行RequestService覆盖我的外接程序对象,请求Office.EncryptionProvider GUID对象,但无论我在那里返回什么,它都不会执行任何操作(至少没有异常或任何可见的操作(。

由于MSDN或我发现的任何其他文档的描述很少(而且明显基于方法/类名(,并且没有示例,问题变得更加严重。

那么,在Office加载项中使用EncryptionProvider的正确方法是什么呢?

在VSTO加载项中,您需要实现EncryptionProvider接口。当在RequestService重写函数中请求相应的guid时,必须返回此接口的实例。

然后尝试执行以下步骤:

  1. 打开windows注册表编辑器(regedit.exe(。

  2. 查找以下注册表子项:

    HKEY_CURRENT_USERSoftwareMicrosoftOfficeXX.0Common
    
  3. 在那里创建一个新的Key

  4. 键入Security,然后按ENTER。

  5. 找到以下注册表子项:

    HKEY_CURRENT_USERSoftwareMicrosoftOfficeXX.0CommonSecurity
    
  6. 在"编辑"菜单上,指向"新建",然后单击"字符串值"。

  7. 键入DeprecatedProviders,然后按ENTER。

  8. 在"详细信息"窗格中,右键单击"不推荐的提供程序",然后单击"修改"。

  9. 在值数据框中,键入自定义CSP名称,然后单击确定。

  10. 退出注册表编辑器。

其中XX.0是安装在您的计算机上的Office版本。我想现在你的加载项应该可以正确地使用Word了。

有关详细信息,请参阅VSTO中的自定义加密。

最新更新