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结构,如果做不到就抛出一个错误。可以捕获错误,此时可以运行代码段以启用访问,也可以向用户显示错误消息以手动启用访问。是通过程序启用访问更好,还是指示用户这样做?
发布于 2009-07-15 14:59:29
好吧,有两件事:众所周知,您可以通过注册表修改office安全设置。因此,Office通过仅在文件打开时读取设置来规避此问题。因此,如果您使用代码更改设置,则还需要关闭并重新打开文件才能使设置生效。其次,篡改用户的安全设置将被认为是“粗鲁”的软件。如果用户想要允许你的代码,他们会的。只需提示他们启用设置并重新启动程序即可。任何超过这一点的行为都会被认为是糟糕的行为。
记住,仅仅因为你可以,并不意味着你应该:)
发布于 2009-07-15 14:55:15
在我看来,它可以通过编程来完成的事实是一个安全问题。考虑到存在这样一种覆盖默认“保护”的简单机制,关闭它并不会使用户面临明显更大的风险。无论如何,任何称职的病毒作者都会这么做。
也就是说,在你工作的时候关闭它20秒,然后再打开它,这会使(损坏的)窗口打开的时间比要求用户关闭它的时间要短得多。
我倾向于向用户请求暂时关闭它的许可,然后确保再次打开它(因为关闭它将是一个禁忌)。
https://stackoverflow.com/questions/1131834
复制相似问题