我遇到了一个问题,无法在Word的VSTO加载项中找到使用Word.Document类的EncryptionProvider属性的正确方法。
每次我尝试为其设置任何值(添加"ProgId"、其他加密提供程序、随机字符串(时,我都会收到OutOfMemoryException。我尝试在addIn类和单独的类中实现Office.EncryptionProvider接口,它的任何方法都无法执行。在我将任何值设置为EncryptionProvider后,VSTO会执行RequestService覆盖我的外接程序对象,请求Office.EncryptionProvider GUID对象,但无论我在那里返回什么,它都不会执行任何操作(至少没有异常或任何可见的操作(。
由于MSDN或我发现的任何其他文档的描述很少(而且明显基于方法/类名(,并且没有示例,问题变得更加严重。
那么,在Office加载项中使用EncryptionProvider的正确方法是什么呢?
在VSTO加载项中,您需要实现EncryptionProvider接口。当在RequestService
重写函数中请求相应的guid时,必须返回此接口的实例。
然后尝试执行以下步骤:
-
打开windows注册表编辑器(regedit.exe(。
-
查找以下注册表子项:
HKEY_CURRENT_USERSoftwareMicrosoftOfficeXX.0Common
-
在那里创建一个新的
Key
。 -
键入
Security
,然后按ENTER。 -
找到以下注册表子项:
HKEY_CURRENT_USERSoftwareMicrosoftOfficeXX.0CommonSecurity
-
在"编辑"菜单上,指向"新建",然后单击"字符串值"。
-
键入
DeprecatedProviders
,然后按ENTER。 -
在"详细信息"窗格中,右键单击"不推荐的提供程序",然后单击"修改"。
-
在值数据框中,键入自定义CSP名称,然后单击确定。
-
退出注册表编辑器。
其中XX.0是安装在您的计算机上的Office版本。我想现在你的加载项应该可以正确地使用Word了。
有关详细信息,请参阅VSTO中的自定义加密。