C# 强制Excel文件与VSTO加载项关联

C# 强制Excel文件与VSTO加载项关联,c#,excel,vsto,office-addins,excel-addins,C#,Excel,Vsto,Office Addins,Excel Addins,这是我的用例: 我需要开发一个excel VSTO加载项,以防止用户访问excel文件,除非安装了加载项。此加载项基本上对当前用户进行身份验证,如果验证成功,它将授予他们对文件的访问权限。基本上,我需要一种方法来保护使用我自己身份验证的文件(而不是Microsoft提供的内置密码保护。为什么?因为我需要能够撤销对该文件的访问权限,而本地密码会阻止我这样做) 我知道如何编写外接程序,但我不知道的是,如何强制文件与该插件关联?我尝试使用自定义属性,但这是非常容易破解的。基本上,我会有一个自定义属性,

这是我的用例: 我需要开发一个excel VSTO加载项,以防止用户访问excel文件,除非安装了加载项。此加载项基本上对当前用户进行身份验证,如果验证成功,它将授予他们对文件的访问权限。基本上,我需要一种方法来保护使用我自己身份验证的文件(而不是Microsoft提供的内置密码保护。为什么?因为我需要能够撤销对该文件的访问权限,而本地密码会阻止我这样做)


我知道如何编写外接程序,但我不知道的是,如何强制文件与该插件关联?我尝试使用自定义属性,但这是非常容易破解的。基本上,我会有一个自定义属性,上面写着:“使用此加载项”,但有知识的用户可以直接进入高级属性并简单地删除它

我建议您使用COM加载项,因为它们不会将代码分发给用户,也不会轻易被黑客攻击。一个简单的加载项,使用.XLA或.xLAM文件是可以被黑客攻击的简单的密码保护的VBA项目。 现在,对于您的工作簿,我建议您对所有数据进行加密和加扰,并使用COM加载项对数据进行解密,并使用函数防止未加密保存工作簿。您只需重写工作簿保存方法即可在保存时进行加密。同时禁用单元格值的复制

对于这一部分,我不知道这是否可行,但您需要覆盖用户对VBA编辑器的访问权限,以便他们无法绕过外接程序保护,也无法禁用“访问选项”菜单以禁用外接程序。这可以通过覆盖Excels快捷键和隐藏菜单栏来实现

同样,对于最后一部分,我不知道是否可以限制用户访问VBA编辑器。我认为这与通过覆盖ALT+F11快捷方式限制对外接程序控件的访问非常相似,只是将“开发人员”选项卡作为一个整体隐藏起来


那是我的两分钱,祝你好运

谢谢你的快速回复。我的主要问题是,如何使特定文件使用我的外接程序,或者知道它需要它?我的外接程序如何知道哪些文件需要它?你知道我的意思吗?嗯,你可以重写Workbooks.open方法来检查外接程序是否处于活动状态。如果没有-不要解密数据并提示用户使用外接程序。如果存在外接程序,则继续进行身份验证。事实证明,没有密码就无法加密文件。我不想设置密码,因为我不想让用户收到密码提示,而且我无法通过编程方式传递密码(除非我执行一些有一半时间有效的hacky SendKeys命令)。相反,我编写了一个与表示加密excel文件的自定义扩展名关联的程序。当用户打开它时,它会被解密回excel文件,然后通过重写WorkbookSave和Open方法,在用户使用完它后,我会对它进行加密。它不是防弹的,但现在就可以了…@TimA。您是如何通过Excel的WorkbookSave实现加密的?我会在外部程序中进行解密。但是,这将不适用于新的加密,因为外部程序不知道文件何时关闭。