Office中國論壇/Access中國論壇
標(biāo)題: 發(fā)現(xiàn)MDE的報(bào)表和窗體居然可以修改 [打印本頁]
作者: tmtony 時(shí)間: 2004-5-10 05:02
標(biāo)題: 發(fā)現(xiàn)MDE的報(bào)表和窗體居然可以修改
今天在修改客戶的報(bào)表時(shí),無意中發(fā)現(xiàn)MDE文件居然還可以修改窗體和報(bào)表的格式,以及屬性。而且是真正保存起來
一會(huì)把方法及步驟整理出來與大家分享。
作者: sea.er 時(shí)間: 2004-5-10 06:15
不會(huì)吧,沒見過,期待。。。
作者: tmtony 時(shí)間: 2004-5-10 07:16
將 Access 數(shù)據(jù)庫保存為 MDE 將禁止用戶在“設(shè)計(jì)”視圖中查看、修改窗體、報(bào)表,不過,如果程序員未將窗體的“允許設(shè)計(jì)更改”屬性設(shè)置為“僅設(shè)計(jì)視圖”,則可以在窗體上右鍵單擊,選擇“屬性”,就可查看窗體及控件上的屬性值。不過,這些屬性卻是無法修改。而對(duì)于報(bào)表,則甚至連“允許設(shè)計(jì)更改”這個(gè)屬性都沒有,那到底有沒有辦法來修改MDE中窗體和報(bào)表的屬性呢?
假設(shè)你生成的MDE文件中有frmTest窗體和rptTest報(bào)表。
按住Shift鍵打開MDE文件,顯示數(shù)據(jù)庫窗口,選擇frmTest窗體后,可發(fā)現(xiàn)“設(shè)計(jì)”按鈕變?yōu)榛疑,不可使用。但使用下面步驟,你會(huì)發(fā)現(xiàn)另有洞天:
(1) 打開窗體frmTest 。
(2) 使用【Alt+F11】組合鍵進(jìn)入VBA代碼編輯器。
(3) 按下設(shè)計(jì)模式 鍵
(4) 窗體會(huì)進(jìn)入設(shè)計(jì)視圖
(5) 在窗體上修改“移動(dòng)電話”標(biāo)簽及文本框的屬性,將標(biāo)簽標(biāo)題改為“傳真”,將文本框的“控件來源”屬性改為“傳真”,再將窗體的標(biāo)題改為“員工資料”。幾乎任何屬性和格式均可修可,可改變控件位置,可改變綁定的數(shù)據(jù)庫。。。。除了代碼,幾乎所有事情均可實(shí)現(xiàn)。
(6) 然后點(diǎn)擊保存按鈕,關(guān)閉窗體,再重新打開窗體,可發(fā)現(xiàn)所有改動(dòng)已經(jīng)保存。
這似乎不太可能,但的確可以保存。
使用同樣的方法,修改報(bào)表的“移動(dòng)電話”文本框綁定到“傳真”字段,重新調(diào)整每個(gè)控件的位置等等。
tony 2004/05/08晚 書
注意事項(xiàng):
上述方法不受窗體的“允許設(shè)計(jì)更改”屬性設(shè)置的影響,也就是說,即使將窗體的“允許設(shè)計(jì)更改”屬性設(shè)置為“僅設(shè)計(jì)視圖”,上停方法仍然適用。還需注意的是,在修改窗體、報(bào)表或控件的屬性之后,必須單擊保存按鈕顯式保存,修改內(nèi)容才能真正保存在MDE中,否則將會(huì)丟失所有的修改內(nèi)容。因?yàn)樵陉P(guān)閉窗體或報(bào)表時(shí),即使對(duì)窗體或報(bào)表修改了內(nèi)容,系統(tǒng)也不會(huì)提示是否保存。
作者: tmtony 時(shí)間: 2004-5-10 07:18
一直以來未搞清楚 “設(shè)計(jì)模式”按鈕的作用。原來可作如是用途,感謝客戶的這個(gè)報(bào)表和歪打正著:)
作者: tmtony 時(shí)間: 2004-5-10 08:04
05/09晚 繼續(xù)研究:
可打開另一個(gè)新的MDB,可將此MDE中窗體或報(bào)表的所有控件全部完完整整復(fù)制過去,與原窗體和報(bào)表一般無二,是原來窗體和報(bào)表的COPY。變相地破解了MDE的窗體和報(bào)表,當(dāng)然,不包括VBA代碼。
如果能夠再寫段程序,將報(bào)表打開到設(shè)計(jì)狀態(tài)(譬如說zhuyiwen做的在子窗體里打開報(bào)表),將報(bào)表在子窗體里打開為設(shè)計(jì)狀態(tài),屏蔽一些不必要 的菜單和工具欄,再做一些布局排版和移位的功能以及拖拉字段到報(bào)表的功能,就可實(shí)現(xiàn)讓用戶完全自定義報(bào)表。
居然還可以插入新的控件、圖表和ActiveX控件,還可增刪窗體頁眉、頁腳。不過,如果刪除了代碼會(huì)引用到的控件,則會(huì)導(dǎo)致代碼出錯(cuò)。
還可以使用“表達(dá)式生成器”,“宏生成器”,不過“代碼生成器”無法使用。
還可以改變報(bào)表的“頁面設(shè)置”等及改變橫打堅(jiān)打等等
作者: xxzxsjp 時(shí)間: 2004-5-10 08:28
好靈。〔桓蚁嘈抛约旱难劬,離解哥德巴赫猜想一步之遙,希望不要擴(kuò)大影響,否則,大家都不敢用Access開發(fā)程序了。
作者: xxzxsjp 時(shí)間: 2004-5-10 08:59
“代碼生成器”可以使用,只不過原"[事件過程]",變成了該按鈕的名稱,刪去該行文字,就可以使用"代碼生成器",換個(gè)角度看或從理論上講,只要悉心研究,搞懂該命令按鈕的作用,當(dāng)然還要搞清楚,表之間的關(guān)系,關(guān)鍵字段的聯(lián)系,主要控件的作用,這些可以從查詢表中找到或分析出來,就可以"照葫蘆畫瓢"編程序了.真是不可思議.黑客帝國,克隆,克隆!呵呵!tmtony站長您活脫就是一個(gè)間諜.再進(jìn)一步想想,豈不是全世界網(wǎng)絡(luò)的“*.mde”,都是向“微軟”這個(gè)皇帝上貢的禮品。只要它想笑納!
[em07][em25][em22][em06]
[em24][em24]
[此貼子已經(jīng)被作者于2004-5-10 9:25:44編輯過]
作者: esmile 時(shí)間: 2004-5-10 09:45
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: ccczzz 時(shí)間: 2004-5-10 14:13
好
作者: Roadbeg 時(shí)間: 2004-5-10 16:13
謝謝,我在想,窗體里有些什么控件,控件屬性等等內(nèi)容應(yīng)該都保存在 access 系統(tǒng)表里(比如 msysobjects),生成 mde的時(shí)候, access 只是禁止了常規(guī)方法更改(即打開設(shè)計(jì)視圖并更改的方法)并禁止查看工程.
但,由于access 開發(fā)人員與 vba for access 的開發(fā)人員的疏忽.造成了此 bug 的存在.
我用 accessxp,2000格式或2002 格式上述方法都有效,謝謝站長.
作者: ququ 時(shí)間: 2004-5-10 16:21
把特殊功能鍵關(guān)掉還可以嗎???好像不行
[此貼子已經(jīng)被作者于2004-5-10 8:21:06編輯過]
作者: harsonliao 時(shí)間: 2004-5-10 16:26
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: Eric666 時(shí)間: 2004-5-10 16:32
奇怪,怎么不行呢?
作者: zhanguoru 時(shí)間: 2004-5-10 17:12
請(qǐng)教:ACCESS97中不知怎樣進(jìn)入VBA代碼編輯器,"使用【Alt+F11】組合鍵進(jìn)入VBA代碼編輯器"進(jìn)不去,請(qǐng)指教謝謝!!
作者: hi-wzj 時(shí)間: 2004-5-10 18:02
工具--啟動(dòng)--高級(jí)--不“使用高級(jí)access特殊鍵”,然后再編譯成mde就不能用【Alt+F11】進(jìn)入了。
但在窗體中選擇某控件后,按【Alt+enter】還是能調(diào)出屬性窗體,做部分的修改。這按鍵倒可通過編碼來屏蔽掉。就不知還有什么快捷方式或按鍵能夠打開了。
作者: tmtony 時(shí)間: 2004-5-10 19:15
1。不能在ACCESS97使用,因?yàn)锳CCESS 97 根本沒有“設(shè)計(jì)模式”按鈕。
2。除了【Alt+F11】進(jìn)入外,使用【Ctr+G】也可進(jìn)入調(diào)試窗口從而間接進(jìn)入代碼方式
3。按照hi-wzj的方法可加強(qiáng)安全性,另除了hi-wzj說的使用【Alt+enter】調(diào)出屬性窗體,也可使用【F4】快捷鍵打開屬性窗體。
4。即使是編繹成MDE,啟動(dòng)里的特殊鍵的設(shè)置也可通過程序解除。即通過代碼打開你的MDE,然后修改屬性
5。Roadbeg說得有理,Access的對(duì)象內(nèi)容及設(shè)置都存儲(chǔ)在系統(tǒng)表中,你可以發(fā)現(xiàn)如果將系統(tǒng)表通過“讀取OLE字段內(nèi)容到文件”方式,可發(fā)現(xiàn)里面的一部分內(nèi)容與使用我介紹過的saveastext方法得出的結(jié)果是類似的。不過,讀出來的文件是什么類型還有待研究,雖然我可看到部分內(nèi)容,但文件頭還是有亂碼,無法正常解釋出來。主要不知道原來的文件擴(kuò)展名。
作者: tmtony 時(shí)間: 2004-5-10 19:27
以下是引用xxzxsjp在2004-5-10 0:58:33的發(fā)言:
“代碼生成器”可以使用,只不過原"[事件過程]",變成了該按鈕的名稱,刪去該行文字,就可以使用"代碼生成器",換個(gè)角度看或從理論上講,只要悉心研究,搞懂該命令按鈕的作用,當(dāng)然還要搞清楚,表之間的關(guān)系,關(guān)鍵字段的聯(lián)系,主要控件的作用,這些可以從查詢表中找到或分析出來,就可以"照葫蘆畫瓢"編程序了.真是不可思議.黑客帝國,克隆,克隆!呵呵!tmtony站長您活脫就是一個(gè)間諜.再進(jìn)一步想想,豈不是全世界網(wǎng)絡(luò)的“*.mde”,都是向“微軟”這個(gè)皇帝上貢的禮品。只要它想笑納!
[em07][em25][em22][em06]
如i]xxzxsjp兄所說,代碼生成器是可以使用,但進(jìn)入“代碼生成器”對(duì)話框中,使用“表達(dá)式生成器“及”宏生成器“是可以的,但使用”代碼生成器“是不允許的,會(huì)提示”工程不可查看“,根本原因是因?yàn)镸DE中源代碼已經(jīng)被刪除,所以無法看到代碼。
還需注意的是,事件屬性中的值在中文版是”[事件過程]“,在英文版是” Events procedure",在其它語言是相應(yīng)語言的文字,這也是為什么當(dāng)直接打開德文程序或波蘭文程序時(shí),明明程序是對(duì)的,但會(huì)提示事件出錯(cuò)的原因,因?yàn)橥ㄟ^這種方法將值改為你的系統(tǒng)語言對(duì)應(yīng)的文字即可。
[此貼子已經(jīng)被作者于2004-5-10 11:28:44編輯過]
作者: magicren 時(shí)間: 2004-5-10 19:48
厲害!
作者: Eric666 時(shí)間: 2004-5-11 00:06
我是用office20000,但是不能修改窗體,按“設(shè)計(jì)模式”沒反應(yīng),雙擊窗體提示“工程不可查看"
作者: goodidea 時(shí)間: 2004-5-11 03:49
居然能這樣?
作者: ccczzz 時(shí)間: 2004-5-11 03:58
標(biāo)題: 這個(gè)mde不能修改
[attach]4609[/attach]
這個(gè)mde不能修改
作者: 李尋歡 時(shí)間: 2004-5-11 07:17
果然好用~謝謝!
作者: tmtony 時(shí)間: 2004-5-11 07:21
以下是引用ccczzz在2004-5-10 19:57:49的發(fā)言:
[attach]4609[/attach]
這個(gè)mde不能修改
已經(jīng)測試過,在啟動(dòng)屬性里允許特殊鍵后,關(guān)閉后再打開后就可使用alt+f11進(jìn)入
作者: xxzxsjp 時(shí)間: 2004-5-11 07:54
[attach]4611[/attach]
我試了一試,還行,就是來回拷貝太麻煩了。
[em25]
作者: xxzxsjp 時(shí)間: 2004-5-11 08:05
[attach]4612[/attach]
這個(gè)我試不通,站長救命啊!
作者: zhuyiwen 時(shí)間: 2004-5-11 09:37
tony, 能否用這個(gè)方法做一個(gè)動(dòng)態(tài)修改報(bào)表的程序呀?主要是針對(duì)編譯后報(bào)表的頁面設(shè)置.
你的發(fā)現(xiàn), 也許是2004年度ACCESS最重大的發(fā)現(xiàn). 謝謝你無私的奉獻(xiàn)!
作者: ccczzz 時(shí)間: 2004-5-11 14:04
好主意,要是能實(shí)現(xiàn),access的應(yīng)用會(huì)有本質(zhì)上的進(jìn)步。
作者: huanghai 時(shí)間: 2004-5-11 21:03
重大的發(fā)現(xiàn)!
作者: HG 時(shí)間: 2004-5-11 21:12
以下是引用tmtony在2004-5-10 11:27:12的發(fā)言:
[quote]以下是引用xxzxsjp在2004-5-10 0:58:33的發(fā)言:
“代碼生成器”可以使用,只不過原"[事件過程]",變成了該按鈕的名稱,刪去該行文字,就可以使用"代碼生成器",換個(gè)角度看或從理論上講,只要悉心研究,搞懂該命令按鈕的作用,當(dāng)然還要搞清楚,表之間的關(guān)系,關(guān)鍵字段的聯(lián)系,主要控件的作用,這些可以從查詢表中找到或分析出來,就可以"照葫蘆畫瓢"編程序了.真是不可思議.黑客帝國,克隆,克隆!呵呵!tmtony站長您活脫就是一個(gè)間諜.再進(jìn)一步想想,豈不是全世界網(wǎng)絡(luò)的“*.mde”,都是向“微軟”這個(gè)皇帝上貢的禮品。只要它想笑納!
[em07][em25][em22][em06]
如i]xxzxsjp兄所說,代碼生成器是可以使用,但進(jìn)入“代碼生成器”對(duì)話框中,使用“表達(dá)式生成器“及”宏生成器“是可以的,但使用”代碼生成器“是不允許的,會(huì)提示”工程不可查看“,根本原因是因?yàn)镸DE中源代碼已經(jīng)被刪除,所以無法看到代碼。
還需注意的是,事件屬性中的值在中文版是”[事件過程]“,在英文版是” Events procedure",在其它語言是相應(yīng)語言的文字,這也是為什么當(dāng)直接打開德文程序或波蘭文程序時(shí),明明程序是對(duì)的,但會(huì)提示事件出錯(cuò)的原因,因?yàn)橥ㄟ^這種方法將值改為你的系統(tǒng)語言對(duì)應(yīng)的文字即可。
[/quote]
我有一個(gè)用英文版OFFICEACCESS在中文版windows上開發(fā)的程式,在英文版Windows系統(tǒng)上會(huì)出現(xiàn)無法運(yùn)行,會(huì)出現(xiàn)如TMTONY所言的上述注意情況!但也有一些窗體可以沒絲毫錯(cuò)誤就可運(yùn)行,但有一些就會(huì)出現(xiàn)如“Events procedure”原因所造成的錯(cuò)誤,即實(shí)我去除啦此窗體下的所有漢字都不能解決問題?(現(xiàn)在依然不知如何解決。
哪么我猜測
--“ 還需注意的是,事件屬性中的值在中文版是”[事件過程]“,在英文版是” Events procedure",在其它語言是相應(yīng)語言的文字,這也是為什么當(dāng)直接打開德文程序或波蘭文程序時(shí),明明程序是對(duì)的,但會(huì)提示事件出錯(cuò)的原因,因?yàn)橥ㄟ^這種方法將值改為你的系統(tǒng)語言對(duì)應(yīng)的文字即可。”--這個(gè)方法是不成立的![em21]
[此貼子已經(jīng)被作者于2004-5-11 13:19:52編輯過]
作者: zhuyiwen 時(shí)間: 2004-5-12 00:38
在MDE中, 進(jìn)入設(shè)計(jì)模式:
VBE.CommandBars("標(biāo)準(zhǔn)").Controls("設(shè)計(jì)模式(&M)").Execute
注: 需引用Office xx.x Object library
但是,只要是打開了的對(duì)象,如窗體/報(bào)表,都會(huì)進(jìn)入設(shè)計(jì)狀態(tài)!
[此貼子已經(jīng)被作者于2004-5-11 16:44:56編輯過]
作者: 哈瘌子 時(shí)間: 2004-5-22 02:07
歷害。!
作者: wangyupc 時(shí)間: 2004-5-22 03:35
果真如此,以前我就看過,別人修改半信半疑現(xiàn)在完全相信啦。
作者: 209 時(shí)間: 2004-5-25 00:56
厲害,謝謝你!
作者: taoether 時(shí)間: 2004-6-3 20:42
大長見識(shí)!
作者: zhengjialon 時(shí)間: 2004-6-14 23:47
以下是引用tmtony在2004-5-10 0:04:19的發(fā)言:
05/09晚 繼續(xù)研究:
可打開另一個(gè)新的MDB,可將此MDE中窗體或報(bào)表的所有控件全部完完整整復(fù)制過去,與原窗體和報(bào)表一般無二,是原來窗體和報(bào)表的COPY。變相地破解了MDE的窗體和報(bào)表,當(dāng)然,不包括VBA代碼。
如果能夠再寫段程序,將報(bào)表打開到設(shè)計(jì)狀態(tài)(譬如說zhuyiwen做的在子窗體里打開報(bào)表),將報(bào)表在子窗體里打開為設(shè)計(jì)狀態(tài),屏蔽一些不必要 的菜單和工具欄,再做一些布局排版和移位的功能以及拖拉字段到報(bào)表的功能,就可實(shí)現(xiàn)讓用戶完全自定義報(bào)表。
居然還可以插入新的控件、圖表和ActiveX控件,還可增刪窗體頁眉、頁腳。不過,如果刪除了代碼會(huì)引用到的控件,則會(huì)導(dǎo)致代碼出錯(cuò)。
還可以使用“表達(dá)式生成器”,“宏生成器”,不過“代碼生成器”無法使用。
還可以改變報(bào)表的“頁面設(shè)置”等及改變橫打堅(jiān)打等等
記得一個(gè)外國的所謂能破解MDE程序的但是它也不能破解VBA代碼,大概就是這個(gè)原理,
作者: cylncxd 時(shí)間: 2004-6-16 18:18
不好意思,我怎么搞不明白xxzxsjp講的?
作者: xxzxsjp 時(shí)間: 2004-6-17 00:06
???[em06][em08]我講的什么?丈二和尚摸不著頭腦?
作者: wu8313 時(shí)間: 2004-6-18 18:51
我來說一句,如果用安全機(jī)制,上述方法還管用嗎?大家可以都來試試,我一直覺得這道防線是滿堅(jiān)固的,可是使用起來不太方便。
作者: gnoy 時(shí)間: 2004-6-19 21:54
嘿嘿,站長老調(diào)重談
作者: tmtony 時(shí)間: 2004-6-20 09:56
是啊,報(bào)上微軟,原來微軟說早就知道這個(gè)bug, 慚愧
, 說在新版正準(zhǔn)備改正這個(gè)問題。
作者: zyp 時(shí)間: 2004-6-22 03:33
我用過一個(gè)他人寫的數(shù)據(jù)庫,啟動(dòng)時(shí)按shift鍵不起任何作用,所以只要將數(shù)據(jù)庫存為.mde后,這個(gè)漏洞應(yīng)該可以補(bǔ)上了,大家認(rèn)為呢?如果哪位有屏敝shift鍵的方法,還請(qǐng)賜教,多謝!
作者: gch1970 時(shí)間: 2004-7-21 01:18
我保存時(shí)提示我需要以獨(dú)占方式打開才能保存,但我以獨(dú)占方式打開時(shí)卻提示我不能用獨(dú)占方式打開,因?yàn)椤坝衅渌脩粼谑褂没驒?quán)限不夠”,而我肯定沒其他用戶。請(qǐng)問時(shí)怎么回事?
作者: xiaxue_203 時(shí)間: 2006-2-3 05:38
厲害!!!!!!!!!!
作者: billworkroom 時(shí)間: 2006-2-8 05:52
好啊,,ding!
作者: sojyang 時(shí)間: 2006-2-13 21:16
真的?
作者: wxw7238 時(shí)間: 2006-2-17 03:00
erfewrf
作者: mcy168 時(shí)間: 2006-9-7 19:43
11111111111111111111
作者: mcy168 時(shí)間: 2006-9-7 19:45
222222222222
作者: mcy168 時(shí)間: 2006-9-7 19:45
33333333333
作者: mcy168 時(shí)間: 2006-9-7 19:46
444444444444
作者: 輕風(fēng) 時(shí)間: 2006-9-7 21:10
mcy168灌水過份了點(diǎn)吧。。。
多嘴[em15]
作者: 方漠 時(shí)間: 2007-4-5 02:02
頂一下.
怎么今天才看到,之前幫客戶仿制一個(gè)MDE的窗體(客戶的客戶提供的),花了我整整兩天的時(shí)間.[em06][em06][em06]
作者: ahyxcyf 時(shí)間: 2007-4-20 21:36
65465476578676
作者: geminily 時(shí)間: 2007-4-23 19:49
你很強(qiáng)哦
作者: Dragxixi 時(shí)間: 2007-4-24 22:44
強(qiáng)!
作者: 葉落知秋 時(shí)間: 2015-7-8 08:58
學(xué)習(xí)了
作者: 葉落知秋 時(shí)間: 2015-7-8 08:58
不過office 2003下測試沒成功,可能方法不對(duì)
作者: olderbull 時(shí)間: 2015-10-7 18:44
haohao
作者: olderbull 時(shí)間: 2015-10-7 19:02
haohao
作者: tofms 時(shí)間: 2015-11-27 14:58
zhe ge hao
作者: benzs320tw 時(shí)間: 2016-8-17 07:07
學(xué)習(xí)一下謝謝了
作者: zzbming 時(shí)間: 2018-10-15 11:53
謝謝
作者: sun001 時(shí)間: 2021-8-25 17:38
學(xué)習(xí)
歡迎光臨 Office中國論壇/Access中國論壇 (http://m.mzhfr.cn/) |
Powered by Discuz! X3.3 |