当前位置: 首页 > 工具软件 > MDE > 使用案例 >

Access中的MDE文件

冯宏放
2023-12-01
认识Access中的MDE文件
 
MDE文件用于确保Access数据库中的窗体、报表和VBA代码的安全。将Access数据库保存为MDE文件时,若数据库包含VBA代码,则会编译所有的代码,删除所有可编译的源代码,并压缩目标数据库。
VBA代码仍可运行,但不能查看和修改。生成MDE文件后,不需要登录或创建及管理用户级安全机制时所需要的用户帐号和权限。

将Access数据库保存为MDE文件的目的在于:
1、避免在“设计”视图中查看、修改或创建窗体、报表和模块;
2、阻止添加、删除或更改指向对象数据库或数据库的引用;
3、不允许更改使用Access或VBA对象模型的属性或方法的代码;
4、阻止导入或导出窗体、报表或模块。但是,可以在表、查询、数据访问页和宏中导入或导出非MDE数据库。任何MDE文件中的表、查询、数据访问页或宏都能导入到其他Access数据库中,但是窗体、报表和模块不能导入到其他Access数据库中。

在生成MDE文件之前,应对原始的数据库文件进行备份。如果要修改MDE文件中的数据库,则必须打开原始的Access数据库来修改它,然后要重新生成MDE文件。

将一个Access数据库保存为MDE文件时应具备的条件:
1、必须由访问VBA代码的密码;
2、如果复制了数据库,必须先删除复制系统的表和属性;
3、如果引用了其他Access数据库或加载项,则必须将引用链中的所有Access数据库或加载项都保存为MDE文件;
4、若Access数据库保存为MDE文件前已经定义了数据库密码或用户级安全机制,则这些功能仍然适用于MDE文件。

将带有用户级安全机制设置的数据库保存为MDE文件,必须有下列条件:
1、必须连接工作组信息文件。
2、用户帐号必须有数据库的“打开/运行”及“以独占方式打开”权限;
3、用户帐号在数据库中的任何表必须有“修改设计”或“管理员”的权限,或者必须是数据库中任何表的拥有者;
4、用户帐号对数据库中的所有对象都必须有“读取设计”的权限。

注意:如果使用的是office2003,那么要生成MDE文件,原MDB文件必须是Access2002-2003文件格式创建的数据库。

 

修改(破解)MDE(ADE)报表和窗体

发现MDE的报表和窗体居然可以修改
今天在修改客户的报表时,无意中发现MDE文件居然还可以修改窗体和报表的格式,以及属性。而且是真正保存起来
现将方法及步骤整理出来与大家分享。

将 Acce 数据库保存为 MDE 将禁止用户在“设计”视图中查看、修改窗体、报表,不过,如果程序员未将窗体的“允许设计更改”属性设置为“仅设计视图”,则可以在窗体上右键单击,选择“属性”,就可查看窗体及控件上的属性值。不过,这些属性却是无法修改。而对于报表,则甚至连“允许设计更改”这个属性都没有,那到底有没有办法来修改MDE中窗体和报表的属性呢?

假设你生成的MDE文件中有frmTest窗体和rptTest报表。

按住Shift键打开MDE文件,显示数据库窗口,选择frmTest窗体后,可发现“设计”按钮变为灰色,不可使用。但使用下面步骤,你会发现另有洞天:
(1) 打开窗体frmTest 。
(2) 使用【Alt F11】组合键进入VBA代码编辑器。
(3) 按下设计模式 键
(4) 窗体会进入设计视图
(5) 在窗体上修改“移动电话”标签及文本框的属性,将标签标题改为“传真”,将文本框的“控件来源”属性改为“传真”,再将窗体的标题改为“员工资料”。几乎任何属性和格式均可修可,可改变控件位置,可改变绑定的数据库。。。。除了代码,几乎所有事情均可实现。
(6) 然后点击保存按钮,关闭窗体,再重新打开窗体,可发现所有改动已经保存。
这似乎不太可能,但的确可以保存。
使用同样的方法,修改报表的“移动电话”文本框绑定到“传真”字段,重新调整每个控件的位置等等。

注意事项:

上述方法不受窗体的“允许设计更改”属性设置的影响,也就是说,即使将窗体的“允许设计更改”属性设置为“仅设计视图”,上停方法仍然适用。还需注意的是,在修改窗体、报表或控件的属性之后,必须单击保存按钮显式保存,修改内容才能真正保存在MDE中,否则将会丢失所有的修改内容。因为在关闭窗体或报表时,即使对窗体或报表修改了内容,系统也不会提示是否保存。

一直以来未搞清楚 “设计模式”按钮的作用。原来可作如是用途,感谢客户的这个报表和歪打正着:)


继续研究:
可打开另一个新的MDB,可将此MDE中窗体或报表的所有控件全部完完整整复制过去,与原窗体和报表一般无二,是原来窗体和报表的COPY。变相地破解了MDE的窗体和报表,当然,不包括VBA代码。
如果能够再写段程序,将报表打开到设计状态(譬如说zhuyiwen做的在子窗体里打开报表),将报表在子窗体里打开为设计状态,屏蔽一些不必要 的菜单和工具栏,再做一些布局排版和移位的功能以及拖拉字段到报表的功能,就可实现让用户完全自定义报表。
居然还可以插入新的控件、图表和ActiveX控件,还可增删窗体页眉、页脚。不过,如果删除了代码会引用到的控件,则会导致代码出错。
还可以使用“表达式生成器”,“宏生成器”,不过“代码生成器”无法使用。
还可以改变报表的“页面设置”等及改变横打坚打等等

 

原文地址:http://ai361.blog.hexun.com/37523119_d.html

 类似资料: