【问题标题】:How to programmatically remove the digital signature from VBA macros in Excel?如何以编程方式从 Excel 中的 VBA 宏中删除数字签名?
【发布时间】:2009-07-29 15:41:29
【问题描述】:

有没有办法以编程方式从 Excel 工作表的 VBA 宏中删除数字签名?

即代码相当于进入VBA编辑器,进入工具菜单->数字签名,点击删除。

【问题讨论】:

    标签: excel digital-signature vba


    【解决方案1】:

    有趣的问题。 出于安全原因,它故意不包含在 Excel 对象模型中。

    可以从证书存储中删除证书。这需要 Win32 api 调用(可以从 VB6 或 VBA 进行,但我不确定这样做后对您的项目的确切影响...... 它肯定会使证书无效,但我不知道它是否会删除它。 此外,您可能不希望从商店中删除证书(因为您可能会将其用于其他用途)。

    要查看证书存储,请在运行提示符下键入 certmgr.msc

    无论如何,一个关于如何以编程方式删除证书的链接。
    KB article showing how to remove a trusted root certificate from the store.

    要求:
    1. 您需要下载适用于相应平台的 Windows SDK 以获取 capicom dll,+ regsvr32 它们 2. 您需要从要删除的证书中提取公钥。
    3. 先用一个不重要的工作簿测试,我不知道这种方法是否会(除了使证书无效)也会导致工作簿损坏。希望有人有比这更好的建议。

    【讨论】:

    • +1 好答案!但是,OP 不再在 SO 上(如显示为灰色且没有分数),因此他们将永远无法将您的答案标记为正确答案。
    • @Otaku,这很酷。我对 SO atm 的主要关注是回答有趣的 Office 和 VBA 问题。从我的低代表可以看出,我可能没有足够的代表角度,哦,不用担心。希望将来有人会从这样的答案中受益。我从 SO 中得到了很多 - 是时候回馈了!
    • OPs 的问题不是删除证书,而是从 excel 文件中删除数字签名(虽然由带有私钥的证书创建,但签名与从您的证书存储不会使签名无效)
    • @Marwie 嗯?我在回答中明确指出,您无法通过 VBA IDE 的 UI 执行数字证书 > 删除方法的编程版本。建议的方法会删除底层证书,因此如果其基于机器的证书将使文件证书无效。
    • 您在没有说明的情况下做出了一些非常明确的假设:从商店中删除 CA 证书就像用大锤敲碎坚果 - 您将扼杀对使用此 CA 签名的任何其他证书的信任.尽管这在具有自签名证书的非常知名的环境中可能是一种可行的方法,但删除 CA 甚至公共受信任的 CA 以终止对单个签名的信任通常是一个非常糟糕的主意,因为这也会破坏安全使用该签名的可能性tls 等其他东西的机器。我认为这应该在扩展答案中明确说明和区分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多