在我们的项目中,我们有一个 Excel 模板 (.xlt) 和一个加载项文件 (.xla)。这些文件用于创建数据视图。Dataview 只不过是一种报告。xla 包含用于创建用于创建、删除、管理数据视图及其内容的控件的代码。这些控件是在 VC++ 中创建的用于创建数据视图的 OCX 控件。我们分别有加载项代码和模板文件。
xlt 和 xla 进行了数字签名,以确保代码是防篡改的。一切正常,直到数字签名出现。数据视图是通过打开模板文件 (.xlt) 并以 .xls 扩展名保存文件来创建的,因此不会更改数字签名的 xlt 和 xla 文件。当我们尝试保存它时,我们收到以下消息“您正在尝试修改已签名的项目。您没有正确的密钥来签署项目......”
当我们给出保存更改并丢弃签名时,签名仅对生成的新文件丢失。xlt 和 xla 的签名保持不变。
我们还尝试手动编辑 excel 中的单元格并保存它,但我们没有收到上述消息。只有在使用 OCX 控件创建数据视图并保存后才会弹出上述消息。