ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11979|回复: 8

[分享]谈谈宏安全级别与突破宏设置

[复制链接]

TA的精华主题

TA的得分主题

发表于 2003-10-27 05:43 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谈谈宏安全级别与突破宏设置 如果在 Microsoft Word 中反复执行某项任务,可以使用宏自动执行该任务。宏是一系列 Word 命令和指令,这些命令和指令组合在一起,形成了一个单独的命令,以实现任务执行的自动化。这是WORD对宏的定义和宗旨,可见其是为操作者高效完成指定任务的一个方法与途径。 作为WORD的一个自动化的重要手段,VBA代码形成有三种方法: 录制宏;编写VBA代码;修改WORD命令。三种方法,都会被记录,其记录不同于WORD自带命令或代码,它在运行前将被识别为“宏”,安全设置将成为一个堵截宏代码或宏病毒的“防火墙”。 作为对于的宏的识别与控制,OFFICE中使用的宏安全性设置,(本文忽略对数字签名的陈述)其中: 高:自动禁用宏并打开文件。 中:提示用户启用或禁用宏。 低:当安全设置为低时,对所有宏的处理方式是相同,不考虑宏的来源或证书状态。使用低安全级时,您不会接收到提示或签名验证,且宏被自动启用。请仅在确定文件中的所有宏均来自可靠来源时,才使用此设置。 在以往的网友提问及本人一段时间对此问题的理解与应用,我们试图突破宏安全级别,而直接使他人的机器不经宏安全检测而直接运行WORD文件,仅依靠WORD本身和VBA代码,是很难成功的,理由如下: 你可以自己在自己的机器上随意进行此设置。 你的代码在进入他人机器上运行前,先得将他人WORD宏安全级别降为低,如果别人对于宏(VBA)一无所知,那么根据WORD默认安装,宏安全级别为中,将出现宏安全警告,看了望而生畏的宏病毒,义无返顾地取消宏;如果有人对宏“谈宏色变”,则将宏高高挂起,高,一切代码不可能逾跃;如果大家对宏有所了解,知道是怎么回事,如何编辑宏,取消宏,禁用宏,其设置由于需要,通常在低,有什么问题,在代码窗口中,是看得到的,如果是他认为陌生的含宏文件,肯定会用SHIFT键来取消宏,再查看一下代码,是否有问题。 另一种思路(与七叶一枝梅为多次探讨过),是将含有VBA代码(宏)的文件存为模板,NORMAL.DOT.如果自己使用,绝对没有问题,但是运行在别人的机器上,同样先得用别人WORD程序来打开,一样通不过,除非你人为地将别人的NORMAL.dot用你的那个覆盖,况且是别人的WORD不能运行时,可见用WORD的代码是做不到的.大家可以试着做一下. 综上所述,VBA也好,宏也罢,是WORD程序对于操作者自动化的一个重要手段,它能够很方便地为你服务,倘想将自己的成果向他人展示时,安全级别的设置是个充分必要条件,想通过VBA代码隐藏一些东西,只要是取消宏或禁用宏,一切都是无用的。 下面是用VBA修改宏安全级别的代码,供大家参考: Private Sub Document_Open() On Error Resume Next If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Security", "Level") <> "" Then System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Security", "Level") = 1 Else CommandBars("Tools").Controls("14").Enabled = False End If End Sub 它是通过修改注册表键值来达到修改宏安全级别的,1为低,2 为中,3为高。WORD2002,为10.0,WORD2000为9.0 以上仅作为个人的一点心得,不妥之处,请多多指正.

TA的精华主题

TA的得分主题

发表于 2004-7-7 19:45 | 显示全部楼层
  呵呵,当了版主就是不一样,收藏了。

TA的精华主题

TA的得分主题

发表于 2004-7-7 20:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这里有一个问题,如果开始宏的安全性设置为“高”,这个宏运行不起来,怎么办呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-7-8 03:56 | 显示全部楼层
以下是引用winak在2004-7-7 20:39:00的发言:

To 守柔:

比如,Win98+Office 97/2000,用代码强行更改注册表后运行时完全没有宏的警告提示,即使用户设置的安全性是高:

但是在Win2000+Office XP,Win2003+Office 2003中,如果用户将宏的安全等级设置为 最高,代码还是无法生效。

不知道守柔大师有没有遇到过累似情况?

TO winak:

首先,你是好久未来光临了,有些不务正业之嫌^_^,都是什么时候的贴子了?

其次,在OFFICE中,根据约定,宏安全级别的目的是针对代码,因此从理论上讲,如果取消宏禁用宏,应该不可能运行,但在97 /2000 中,可能存在些问题,那这是如果该文档保存为模板形式,则可能不会通过对宏的取消,不论其安全性设置。但不是普遍的,说到底病毒美丽莎便是通过这种方式获得传播的。

XP中肯定不存在。

遗憾的是微软在对EXCEL中的宏设置可以由老刀兄的精华贴子来安慰一些(因为有4.0宏表函数)强烈要求取消宏便退出或不可见的网友的心, 而在WORD中,竟无计可施,郁闷!

另外就更改宏安全性级别注册表中直接更改或者说是在程序中的宏安全性设置,是一个互动过程,也就是WORD每次打开程序,可以向注册表读取此值(level),退出程序则将WORD中的设置返回给注册表如果不一样则修改注册表中的level 值。

如果将宏安全性设为低运行宏,但核心代码还必需有一个”信任对VB项目的访问”问题,否则其危害程度是有限的。

是故,请WINAK看一下拙贴:《我眼中的WORD》,中有关此两点的论述。

>

TA的精华主题

TA的得分主题

发表于 2004-7-8 08:57 | 显示全部楼层

     

TO winak: 首先,你是好久未来光临了,有些不务正业之嫌^_^,都是什么时候的贴子了

  呵呵,首席斑竹也算是新婚燕尔,再放一段时间的假吧,呵呵。

TA的精华主题

TA的得分主题

发表于 2008-6-18 13:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
记下了

TA的精华主题

TA的得分主题

发表于 2004-7-7 20:39 | 显示全部楼层

To 守柔:

这个问题值得探讨,虽然论坛上已经有很多关于宏的安全性设置的讨论,但是经过测试后发现,不同的环境会导致结果完全不同。

比如,Win98+Office 97/2000,用代码强行更改注册表后运行时完全没有宏的警告提示,即使用户设置的安全性是高,但是在Win2000+Office XP,Win2003+Office 2003中,如果用户将宏的安全等级设置为 最高,代码还是无法生效。

不知道守柔大师有没有遇到过累似情况?

TA的精华主题

TA的得分主题

发表于 2012-4-29 11:42 | 显示全部楼层
Private Sub Document_Open()
On Error Resume Next
If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Security", "Level") <> "" Then
System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Security", "Level") = 1
Else CommandBars("Tools").Controls("14").Enabled = False
End If
End Sub
它是通过修改注册表键值来达到修改宏安全级别的,1为低,2 为中,3为高
学习一下

TA的精华主题

TA的得分主题

发表于 2012-7-21 20:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这不 先有鸡蛋还是先有鸡的问题 嘛,对主宏级别老高,用VBA也运行不起来,如何设置宏等级。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-6 11:02 , Processed in 0.045332 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表