2

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结构,如果不能,则抛出错误。可以捕获错误,此时它可以运行代码片段以启用访问或向用户显示错误消息以手动启用访问。是更好地通过程序启用访问,以后可以禁用它,还是指示用户这样做?

4

2 回答 2

2

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

也就是说,在您工作时将其关闭 20 秒,然后再次打开它会使(损坏的)窗口打开的时间远少于要求用户关闭它的时间。

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

于 2009-07-15T14:55:15.493 回答
1

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

于 2009-07-15T14:59:29.217 回答