2

在我们的项目中,我们有一个 Excel 模板 (.xlt) 和一个加载项文件 (.xla)。这些文件用于创建数据视图。Dataview 只不过是一种报告。xla 包含用于创建用于创建、删除、管理数据视图及其内容的控件的代码。这些控件是在 VC++ 中创建的用于创建数据视图的 OCX 控件。我们分别有加载项代码和模板文件。

xlt 和 xla 进行了数字签名,以确保代码是防篡改的。一切正常,直到数字签名出现。数据视图是通过打开模板文件 (.xlt) 并以 .xls 扩展名保存文件来创建的,因此不会更改数字签名的 xlt 和 xla 文件。当我们尝试保存它时,我们收到以下消息“您正在尝试修改已签名的项目。您没有正确的密钥来签署项目......”

当我们给出保存更改并丢弃签名时,签名仅对生成的新文件丢失。xlt 和 xla 的签名保持不变。

我们还尝试手动编辑 excel 中的单元格并保存它,但我们没有收到上述消息。只有在使用 OCX 控件创建数据视图并保存后才会弹出上述消息。

4

2 回答 2

0

你想保护什么?您是签署了整个工作簿/模板,还是只签署了代码?

.xls 是 .xlt 的副本,因此模板签名也被复制到 xls。想法:

  1. 尝试仅对模板中的代码进行签名。在 IDE 中,使用工具 -> 数字签名 (Excel 2002/2003)
  2. 把模板中的所有代码去掉,放到add in
  3. 如果这太难了,请仅使用模板中的代码进行第二次添加
于 2009-09-09T16:24:15.150 回答
0

我也有类似的问题。我发现只有当我的宏将工作表插入或删除工作簿时才会发生这种情况。事实证明,因为每个工作表都有特定于该工作表的宏,所以添加或删除工作表会有效地修改宏源代码。

感谢 Turbo Law 的 Keith Survell 让我在这个问题上指出了正确的方向:

http://help.turbolaw.com/entries/362246-warning-message-you-have-modified-a-signed-project-you-do-not-have-the-right-key-to-sign-this-项目

我无法找到解释此问题的权威 Microsoft 来源。

于 2013-01-07T23:43:26.960 回答