是否启用安全保护function

Excel电子表格需要对其Project结构进行编程访问。 但是,此访问在默认情况下是禁用的。 它可以以编程方式启用,通过写入这个片段的registry:

 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 

尽pipe可以通过编程完成(并重置),但这可能会造成安全问题。

在我的项目中,它试图修改Project结构,如果不能的话会抛出一个错误。 该错误可以被捕获,在这一点上,它可以运行该代码段来启用访问,或者向用户显示错误消息以手动启用访问。 通过程序启用访问,稍后可以禁用,还是指示用户这样做是否更好?

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

在我看来,它可以通过编程完成的事实一个安全问题。 鉴于存在这种简单的机制来覆盖默认的“保护”,您不会通过closures将用户暴露于更大的风险。 任何值得他们的盐的病毒作家都会这样做。

也就是说,在你工作的时候把它关掉20秒,然后再打开它,这个(打破的)窗口打开的时间远远less于要求用户把它关掉的时间。

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