Office中国论坛/Access中国论坛

标题: 发现MDE的报表和窗体居然可以修改 [打印本页]

作者: tmtony    时间: 2004-5-10 05:02
标题: 发现MDE的报表和窗体居然可以修改
今天在修改客户的报表时,无意中发现MDE文件居然还可以修改窗体和报表的格式,以及属性。而且是真正保存起来
一会把方法及步骤整理出来与大家分享。
作者: sea.er    时间: 2004-5-10 06:15
不会吧,没见过,期待。。。
作者: tmtony    时间: 2004-5-10 07:16
     将 Access 数据库保存为 MDE 将禁止用户在“设计”视图中查看、修改窗体、报表,不过,如果程序员未将窗体的“允许设计更改”属性设置为“仅设计视图”,则可以在窗体上右键单击,选择“属性”,就可查看窗体及控件上的属性值。不过,这些属性却是无法修改。而对于报表,则甚至连“允许设计更改”这个属性都没有,那到底有没有办法来修改MDE中窗体和报表的属性呢?

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

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

tony 2004/05/08晚 书

注意事项:

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


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


      

作者: xxzxsjp    时间: 2004-5-10 08:28
好灵啊!不敢相信自己的眼睛,离解哥德巴赫猜想一步之遥,希望不要扩大影响,否则,大家都不敢用Access开发程序了。
作者: xxzxsjp    时间: 2004-5-10 08:59
“代码生成器”可以使用,只不过原"[事件过程]",变成了该按钮的名称,删去该行文字,就可以使用"代码生成器",换个角度看或从理论上讲,只要悉心研究,搞懂该命令按钮的作用,当然还要搞清楚,表之间的关系,关键字段的联系,主要控件的作用,这些可以从查询表中找到或分析出来,就可以"照葫芦画瓢"编程序了.真是不可思议.黑客帝国,克隆,克隆!呵呵!tmtony站长您活脱就是一个间谍.再进一步想想,岂不是全世界网络的“*.mde”,都是向“微软”这个皇帝上贡的礼品。只要它想笑纳!


[em07][em25][em22][em06]





[em24][em24]
[此贴子已经被作者于2004-5-10 9:25:44编辑过]


作者: esmile    时间: 2004-5-10 09:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: ccczzz    时间: 2004-5-10 14:13

作者: Roadbeg    时间: 2004-5-10 16:13
谢谢,我在想,窗体里有些什么控件,控件属性等等内容应该都保存在 access 系统表里(比如 msysobjects),生成 mde的时候, access 只是禁止了常规方法更改(即打开设计视图并更改的方法)并禁止查看工程.
但,由于access 开发人员与 vba for access 的开发人员的疏忽.造成了此 bug 的存在.
我用 accessxp,2000格式或2002 格式上述方法都有效,谢谢站长.
作者: ququ    时间: 2004-5-10 16:21
把特殊功能键关掉还可以吗???好像不行

[此贴子已经被作者于2004-5-10 8:21:06编辑过]


作者: harsonliao    时间: 2004-5-10 16:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: Eric666    时间: 2004-5-10 16:32
奇怪,怎么不行呢?

作者: zhanguoru    时间: 2004-5-10 17:12
請教:ACCESS97中不知怎樣進入VBA代码编辑器,"使用【Alt+F11】组合键进入VBA代码编辑器"進不去,請指教謝謝!!
作者: hi-wzj    时间: 2004-5-10 18:02
     工具--启动--高级--不“使用高级access特殊键”,然后再编译成mde就不能用【Alt+F11】进入了。
    但在窗体中选择某控件后,按【Alt+enter】还是能调出属性窗体,做部分的修改。这按键倒可通过编码来屏蔽掉。就不知还有什么快捷方式或按键能够打开了。
作者: tmtony    时间: 2004-5-10 19:15
1。不能在ACCESS97使用,因为ACCESS 97 根本没有“设计模式”按钮。
2。除了【Alt+F11】进入外,使用【Ctr+G】也可进入调试窗口从而间接进入代码方式
3。按照hi-wzj的方法可加强安全性,另除了hi-wzj说的使用【Alt+enter】调出属性窗体,也可使用【F4】快捷键打开属性窗体。
4。即使是编绎成MDE,启动里的特殊键的设置也可通过程序解除。即通过代码打开你的MDE,然后修改属性
5。Roadbeg说得有理,Access的对象内容及设置都存储在系统表中,你可以发现如果将系统表通过“读取OLE字段内容到文件”方式,可发现里面的一部分内容与使用我介绍过的saveastext方法得出的结果是类似的。不过,读出来的文件是什么类型还有待研究,虽然我可看到部分内容,但文件头还是有乱码,无法正常解释出来。主要不知道原来的文件扩展名。


作者: tmtony    时间: 2004-5-10 19:27
以下是引用xxzxsjp在2004-5-10 0:58:33的发言:
“代码生成器”可以使用,只不过原"[事件过程]",变成了该按钮的名称,删去该行文字,就可以使用"代码生成器",换个角度看或从理论上讲,只要悉心研究,搞懂该命令按钮的作用,当然还要搞清楚,表之间的关系,关键字段的联系,主要控件的作用,这些可以从查询表中找到或分析出来,就可以"照葫芦画瓢"编程序了.真是不可思议.黑客帝国,克隆,克隆!呵呵!tmtony站长您活脱就是一个间谍.再进一步想想,岂不是全世界网络的“*.mde”,都是向“微软”这个皇帝上贡的礼品。只要它想笑纳!


[em07][em25][em22][em06]


如i]xxzxsjp兄所说,代码生成器是可以使用,但进入“代码生成器”对话框中,使用“表达式生成器“及”宏生成器“是可以的,但使用”代码生成器“是不允许的,会提示”工程不可查看“,根本原因是因为MDE中源代码已经被删除,所以无法看到代码。
  还需注意的是,事件属性中的值在中文版是”[事件过程]“,在英文版是” Events procedure",在其它语言是相应语言的文字,这也是为什么当直接打开德文程序或波兰文程序时,明明程序是对的,但会提示事件出错的原因,因为通过这种方法将值改为你的系统语言对应的文字即可。






[此贴子已经被作者于2004-5-10 11:28:44编辑过]


作者: magicren    时间: 2004-5-10 19:48
厉害!
作者: Eric666    时间: 2004-5-11 00:06
我是用office20000,但是不能修改窗体,按“设计模式”没反应,双击窗体提示“工程不可查看"

作者: goodidea    时间: 2004-5-11 03:49
居然能这样?
作者: ccczzz    时间: 2004-5-11 03:58
标题: 这个mde不能修改
[attach]4609[/attach]
这个mde不能修改
作者: 李寻欢    时间: 2004-5-11 07:17
果然好用~谢谢!
作者: tmtony    时间: 2004-5-11 07:21
以下是引用ccczzz在2004-5-10 19:57:49的发言:
[attach]4609[/attach]
这个mde不能修改

已经测试过,在启动属性里允许特殊键后,关闭后再打开后就可使用alt+f11进入
作者: xxzxsjp    时间: 2004-5-11 07:54
[attach]4611[/attach]
我试了一试,还行,就是来回拷贝太麻烦了。
[em25]
作者: xxzxsjp    时间: 2004-5-11 08:05

[attach]4612[/attach]
这个我试不通,站长救命啊!
作者: zhuyiwen    时间: 2004-5-11 09:37
tony, 能否用这个方法做一个动态修改报表的程序呀?主要是针对编译后报表的页面设置.

你的发现, 也许是2004年度ACCESS最重大的发现. 谢谢你无私的奉献!
作者: ccczzz    时间: 2004-5-11 14:04
好主意,要是能实现,access的应用会有本质上的进步。
作者: huanghai    时间: 2004-5-11 21:03
重大的发现!
作者: HG    时间: 2004-5-11 21:12
以下是引用tmtony在2004-5-10 11:27:12的发言:
[quote]以下是引用xxzxsjp在2004-5-10 0:58:33的发言:
“代码生成器”可以使用,只不过原"[事件过程]",变成了该按钮的名称,删去该行文字,就可以使用"代码生成器",换个角度看或从理论上讲,只要悉心研究,搞懂该命令按钮的作用,当然还要搞清楚,表之间的关系,关键字段的联系,主要控件的作用,这些可以从查询表中找到或分析出来,就可以"照葫芦画瓢"编程序了.真是不可思议.黑客帝国,克隆,克隆!呵呵!tmtony站长您活脱就是一个间谍.再进一步想想,岂不是全世界网络的“*.mde”,都是向“微软”这个皇帝上贡的礼品。只要它想笑纳!
  [em07][em25][em22][em06]

如i]xxzxsjp兄所说,代码生成器是可以使用,但进入“代码生成器”对话框中,使用“表达式生成器“及”宏生成器“是可以的,但使用”代码生成器“是不允许的,会提示”工程不可查看“,根本原因是因为MDE中源代码已经被删除,所以无法看到代码。
   还需注意的是,事件属性中的值在中文版是”[事件过程]“,在英文版是” Events procedure",在其它语言是相应语言的文字,这也是为什么当直接打开德文程序或波兰文程序时,明明程序是对的,但会提示事件出错的原因,因为通过这种方法将值改为你的系统语言对应的文字即可。

[/quote]
我有一个用英文版OFFICEACCESS在中文版windows上开发的程式,在英文版Windows系统上会出现无法运行,会出现如TMTONY所言的上述注意情况!但也有一些窗体可以没丝毫错误就可运行,但有一些就会出现如“Events procedure”原因所造成的错误,即实我去除啦此窗体下的所有汉字都不能解决问题?(现在依然不知如何解决!)
哪么我猜测
--“ 还需注意的是,事件属性中的值在中文版是”[事件过程]“,在英文版是” Events procedure",在其它语言是相应语言的文字,这也是为什么当直接打开德文程序或波兰文程序时,明明程序是对的,但会提示事件出错的原因,因为通过这种方法将值改为你的系统语言对应的文字即可。”--这个方法是不成立的![em21]

[此贴子已经被作者于2004-5-11 13:19:52编辑过]


作者: zhuyiwen    时间: 2004-5-12 00:38
在MDE中, 进入设计模式:

VBE.CommandBars("标准").Controls("设计模式(&M)").Execute

注: 需引用Office xx.x Object library

但是,只要是打开了的对象,如窗体/报表,都会进入设计状态!
[此贴子已经被作者于2004-5-11 16:44:56编辑过]


作者: 哈瘌子    时间: 2004-5-22 02:07
历害!!!
作者: wangyupc    时间: 2004-5-22 03:35
果真如此,以前我就看过,别人修改半信半疑现在完全相信啦。
作者: 209    时间: 2004-5-25 00:56
厉害,谢谢你!
作者: taoether    时间: 2004-6-3 20:42
大长见识!
作者: zhengjialon    时间: 2004-6-14 23:47
以下是引用tmtony在2004-5-10 0:04:19的发言:

05/09晚 继续研究:

      可打开另一个新的MDB,可将此MDE中窗体或报表的所有控件全部完完整整复制过去,与原窗体和报表一般无二,是原来窗体和报表的COPY。变相地破解了MDE的窗体和报表,当然,不包括VBA代码。

      如果能够再写段程序,将报表打开到设计状态(譬如说zhuyiwen做的在子窗体里打开报表),将报表在子窗体里打开为设计状态,屏蔽一些不必要 的菜单和工具栏,再做一些布局排版和移位的功能以及拖拉字段到报表的功能,就可实现让用户完全自定义报表。

      居然还可以插入新的控件、图表和ActiveX控件,还可增删窗体页眉、页脚。不过,如果删除了代码会引用到的控件,则会导致代码出错。

     还可以使用“表达式生成器”,“宏生成器”,不过“代码生成器”无法使用。

    还可以改变报表的“页面设置”等及改变横打坚打等等





      

记得一个外国的所谓能破解MDE程序的但是它也不能破解VBA代码,大概就是这个原理,
作者: cylncxd    时间: 2004-6-16 18:18
不好意思,我怎么搞不明白xxzxsjp讲的?
作者: xxzxsjp    时间: 2004-6-17 00:06
???[em06][em08]我讲的什么啊?丈二和尚摸不着头脑?
作者: wu8313    时间: 2004-6-18 18:51
我来说一句,如果用安全机制,上述方法还管用吗?大家可以都来试试,我一直觉得这道防线是满坚固的,可是使用起来不太方便。
作者: gnoy    时间: 2004-6-19 21:54
嘿嘿,站长老调重谈
作者: tmtony    时间: 2004-6-20 09:56
是啊,报上微软,原来微软说早就知道这个bug, 惭愧, 说在新版正准备改正这个问题。
作者: zyp    时间: 2004-6-22 03:33
我用過一個他人寫的數據庫,啟動時按shift鍵不起任何作用,所以只要將數據庫存為.mde后,這個漏洞應該可以補上了,大家認為呢?如果哪位有屏敝shift鍵的方法,還請賜教,多謝!
作者: gch1970    时间: 2004-7-21 01:18
我保存时提示我需要以独占方式打开才能保存,但我以独占方式打开时却提示我不能用独占方式打开,因为“有其他用户在使用或权限不够”,而我肯定没其他用户。请问时怎么回事?
作者: xiaxue_203    时间: 2006-2-3 05:38
厉害!!!!!!!!!!
作者: billworkroom    时间: 2006-2-8 05:52
好啊,,ding!
作者: sojyang    时间: 2006-2-13 21:16
真的?
作者: wxw7238    时间: 2006-2-17 03:00
erfewrf
作者: mcy168    时间: 2006-9-7 19:43
11111111111111111111
作者: mcy168    时间: 2006-9-7 19:45
222222222222
作者: mcy168    时间: 2006-9-7 19:45
33333333333
作者: mcy168    时间: 2006-9-7 19:46
444444444444
作者: 轻风    时间: 2006-9-7 21:10
mcy168灌水过份了点吧。。。

多嘴[em15]
作者: 方漠    时间: 2007-4-5 02:02
顶一下.

怎么今天才看到,之前帮客户仿制一个MDE的窗体(客户的客户提供的),花了我整整两天的时间.[em06][em06][em06]
作者: ahyxcyf    时间: 2007-4-20 21:36
65465476578676
作者: geminily    时间: 2007-4-23 19:49
你很强哦
作者: Dragxixi    时间: 2007-4-24 22:44
强!
作者: 叶落知秋    时间: 2015-7-8 08:58
学习了
作者: 叶落知秋    时间: 2015-7-8 08:58
不过office 2003下测试没成功,可能方法不对
作者: olderbull    时间: 2015-10-7 18:44
haohao
作者: olderbull    时间: 2015-10-7 19:02
haohao
作者: tofms    时间: 2015-11-27 14:58
zhe ge hao
作者: benzs320tw    时间: 2016-8-17 07:07
学习一下谢谢了
作者: zzbming    时间: 2018-10-15 11:53
谢谢
作者: sun001    时间: 2021-8-25 17:38
学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3