是否启用受安全保护的功能

时间:2009-07-15 14:42:08

标签: excel vba excel-vba excel-2007

Excel电子表格需要以编程方式访问其Project结构。但是,默认情况下禁用此访问。它可以通过编程方式启用,方法是使用以下代码段写入注册表:

Set wsh = CreateObject("WScript.Shell")
'key to modify'
str1 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & Application.Version & "\Word\Security\AccessVBOM"
'enable access'
wsh.RegWrite str1, 1, "REG_DWORD"
'read the vba project name'
MsgBox Application.NormalTemplate.VBProject.Name
'disable access'
wsh.RegDelete str1

虽然可以通过编程方式完成(和重置),但这可能会产生安全问题。

在我的项目中,它尝试修改Project结构,如果不能,则抛出错误。可以捕获该错误,此时它可以运行代码段以启用访问权限或向用户显示错误消息以手动启用访问权限。是否最好通过程序启用访问,以后可以禁用它,或者指示用户这样做?

2 个答案:

答案 0 :(得分:2)

在我看来,可以通过编程方式完成的事实是一个安全问题。鉴于存在这种简单的机制来覆盖默认的“保护”,您不会通过关闭它来使用户面临更大的风险。无论如何,任何有价值的病毒作者都会这样做。

也就是说,当你完成工作然后再打开它时,将其关闭20秒会使(打破的)窗口打开的时间远远少于要求用户将其关闭的时间。

我倾向于要求用户允许暂时关闭它,然后再确定我再次打开它(因为关闭它将是一个禁忌)。

答案 1 :(得分:1)

嗯,有两件事:众所周知,您可以通过注册表修改办公室安全设置。因此Office通过仅在文件打开时读取设置来绕过这一点。因此,如果您使用代码更改设置,则还需要关闭并重新打开文件以使设置生效。其次,篡改用户安全设置将被视为“粗鲁”软件。如果用户希望允许您的代码,他们会。只需提示他们启用设置并重新启动程序。任何过去都会被认为是不良行为 记住,只因为你可以,并不意味着你应该:)