關(guān)于控件注冊(cè)和使用許可問(wèn)題的解決辦法
2024-07-21 02:24:13
供稿:網(wǎng)友
本文來(lái)源于網(wǎng)頁(yè)設(shè)計(jì)愛(ài)好者web開(kāi)發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問(wèn)。鑒于前一段時(shí)間受困于微軟控件的授權(quán)問(wèn)題,而且互聯(lián)網(wǎng)上也很難找到問(wèn)題的解決方案,這兩天論壇中也不停有網(wǎng)友在問(wèn)相類似的問(wèn)題,特撰寫此文,以饗vckbase各位網(wǎng)友。
大家都知道,對(duì)于普通的ocx控件,我們?cè)诎l(fā)布時(shí),使用安裝軟件拷貝到目標(biāo)機(jī)器上然后再注冊(cè)一下(或者手工拷貝然后用regsvr32注冊(cè))就可以了 。
但是對(duì)于微軟提供的一些控件,比如 microsoft ado control,microsoft datagrid control等等,常常發(fā)現(xiàn),在開(kāi)發(fā)的機(jī)器上使用的好好的 ,但使用正常的發(fā)布流程,發(fā)布到目標(biāo)機(jī)器上,就會(huì)出現(xiàn)“沒(méi)有注冊(cè)類別”的提示 ,軟件無(wú)法使用等等問(wèn)題。
究其原因,在于微軟為了防止其軟件被非法發(fā)布,所以增加了許可機(jī)制(license);按理說(shuō),只有開(kāi)發(fā)環(huán)境才需要許可,而在目標(biāo)碼的環(huán)境中,應(yīng)用程序可以正常使用的,只不過(guò)不能被其他的開(kāi)發(fā)工具打開(kāi);為什么會(huì)與微軟原先的想法違背,我就不得而知了。讓咱們進(jìn)入正題,說(shuō)說(shuō)如何解決這個(gè)問(wèn)題。
首先,必須弄清楚許可信息的存儲(chǔ)位置,告訴你,就在hkey_classes_root/licenses目錄下。 接下來(lái),需要知道哪個(gè)控件使用的是什么注冊(cè)信息,在vs.net安裝盤的一個(gè)目錄extras/vb6 controls下,有一個(gè)注冊(cè)文件vb6controls.reg,記錄了vb6的大多數(shù)控件 的許可信息,下面是此文件的內(nèi)容:
regedit
hkey_classes_root/licenses = licensing: copying the keys may be a violation of established copyrights.
// masked edit control 6.0 license key
hkey_classes_root/licenses/bc96f860-9928-11cf-8afa-00aa00c00905 = mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj
// chart control 6.0 (oledb) license key
hkey_classes_root/licenses/12b142a4-bd51-11d1-8c08-0000f8754da1 = aadhgafabafajhchnbchehfambfbbachmfmb
// common dialog control 6.0 license key
hkey_classes_root/licenses/4d553650-6abe-11cf-8adb-00aa00c00905 = gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj
// ado data control 6.0 (oledb) license key
hkey_classes_root/licenses/c4145310-469c-11d1-b182-00a0c922e820 = konhqhioohihphkouimonhqhvnwiqhhhnjti
// common controls-3 6.0 license key
hkey_classes_root/licenses/38911da0-e448-11d0-84a3-00dd01104159 = mcpckchcdchjcjcclidcgcgchdqdcjhcojpd
// windows common controls-2 5.0 (sp2) license key
hkey_classes_root/licenses/9e799bf1-8817-11cf-958f-0020afc28c3b = uqpqnqkjujkjjjjqwktjrjkjtkupsjnjtoun
// windows common controls license key
hkey_classes_root/licenses/57cbf9e0-6aa7-11cf-8adb-00aa00c00905 = aahakhchghkhfhaamghhbhbhkbpgfhahlfle
// data bound grid control 5.0(sp3) license key
hkey_classes_root/licenses/556c75f1-efbc-11cf-b9f3-00a0247033c4 = xybiedobrqsprbijaegcbislrsiucfjdhisl
// data bound list controls 6.0 license key
hkey_classes_root/licenses/096efc40-6abf-11cf-850c-08002b30345d = knsgigmnmngnmnigthmgpninrmumhgkgrlrk
// internet transfer control 6.0 license key
hkey_classes_root/licenses/78e1bdd1-9941-11cf-9756-00aa00c00908 = yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun
// multimedia control 6.0 license key
hkey_classes_root/licenses/b1efccf0-6ac1-11cf-8adb-00aa00c00905 = qqkjvqpqmqjjpqjjvpqqkqmqvkypoqjquoun
// chart control 6.0 license key
hkey_classes_root/licenses/7c35ca30-d112-11cf-8e72-00a0c90f26f8 = whmhmhohmhiorhkouimhihihwiwinhlosmsl
// windows common controls-2 6.0 license key
hkey_classes_root/licenses/4f86badf-9f77-11d1-b1b7-0000f8753f5d = iplpwpnippopupiivjrioppisjsjlpiiokuj
// windows common controls 6.0 license key
hkey_classes_root/licenses/ed4b87c4-9f76-11d1-8bf7-0000f8754da1 = knlggnmntgggrninthpgmnngrhqhnnjnslsh
// comm control 6.0 license key
hkey_classes_root/licenses/4250e830-6ac2-11cf-8adb-00aa00c00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
// datagrid control 6.0 (oledb) license key
hkey_classes_root/licenses/cde57a55-8b86-11d0-b3c6-00a0c90aea82 = ekpkhddkjkekpdjkqemkfkldoeoefkfdjfqe
// datalist control 6.0 (oledb) license key
hkey_classes_root/licenses/a133f000-ccb0-11d0-a316-00aa00688b10 = cibbcimbpihbbbbbnhdbeidiocmcbbdbgdoc
// dbwin license key
hkey_classes_root/licenses/d015b071-d2ed-11d0-a31a-00aa00688b10 = gjdcfjpcmjicjcdcoihcechjlioiccechepd
// msdbrpt license key
hkey_classes_root/licenses/9df1a470-ba8e-11d0-849c-00a0c90dc8a9 = cchcqjejhcgcqcfjpdfcdjkckiqikchcojpd
// flexgrid control 6.0 license key
hkey_classes_root/licenses/1f3d5522-3f42-11d1-b2fa-00a0c908fb55 = gcfjdjecpchcncdjpdejijgcrdoijjfcieod
// mapi controls 6.0 license key
hkey_classes_root/licenses/899b3e80-6ac6-11cf-8adb-00aa00c00905 = wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun
// msrdo 2.0 license key
hkey_classes_root/licenses/b1692f60-23b0-11d0-8e95-00a0c90f26f8 = mjjjccncgjijrcfjpdfjfcejpdkdkcgjojpd
// remotedata control 6.0 license key
hkey_classes_root/licenses/43478d75-78e0-11cf-8e78-00a0d100038e = imshohohphlmnhimuinmphmmuiminhlmsmsl
// windowless controls 6.0 license key
hkey_classes_root/licenses/80e80ef0-dbbe-11d0-bce2-00a0c90dca10 = qijimitpmpnpxplpvjnikpkpqoxjmpkpoivj
// pictureclip control 6.0 license key
hkey_classes_root/licenses/6fb38640-6ac7-11cf-8adb-00aa00c00905 = gdjkokgdldikhdddpjkkekgknesjikdkoioh
// rich textbox control 6.0 license key
hkey_classes_root/licenses/dc4d7920-6ac8-11cf-8adb-00aa00c00905 = iokouhloohrojhhhtnooiokomiwnmohosmsl
// sheridan tab control license key
hkey_classes_root/licenses/190b7910-992a-11cf-8afa-00aa00c00905 = gclclcejjcmjdcccoikjlcecoioijjcjnhng
// sysinfo control 6.0 license key
hkey_classes_root/licenses/e32e2733-1bc5-11d0-b8c3-00a0c90dca10 = kmhfimlflmmfpffmsgfmhmimngtghmoflhsg
// winsock control 6.0 license key
hkey_classes_root/licenses/2c49f800-c2dd-11cf-9ad6-0080c7e7b78d = mlrljgrlhltlngjlthrligklpkrhllglqlrk
通常我們只要把這個(gè)文件導(dǎo)入到目標(biāo)機(jī)器的注冊(cè)表,即可解決困擾我們的控件授權(quán)問(wèn)題了。不過(guò)在我的使用過(guò)程中發(fā)現(xiàn)有兩個(gè)問(wèn)題:
這里面的注釋信息不準(zhǔn)確,即可能標(biāo)注是某個(gè)控件的許可,但用這個(gè)許可根本不行,不知道是微軟故意的還是弄錯(cuò)了,比如 flexgrid control 6.0 的 許可應(yīng)該是:hkey_classes_root/licenses/72e67120-5959-11cf-91f6-c2863c385e30=ibcbbbebqbdbciebmcobmbhifcmciibblgmf
許可信息不全,也就是說(shuō), 有一些控件的許可信息在這個(gè)文件里根本沒(méi)有;
那我們?cè)趺崔k呢?苦惱ing...。一拍腦袋,有了,既然我們已經(jīng)知道其在注冊(cè)表中的位置、并且在開(kāi)發(fā)的機(jī)器上使正常的,何不直接從開(kāi)發(fā)機(jī)器上把整個(gè)licenses目錄下的注冊(cè)信息都導(dǎo)出來(lái),然后再導(dǎo)入到目標(biāo)機(jī)器上,既省事,還不怕有漏網(wǎng)之魚 :)呵呵,大家都明白了吧?
初次寫文章,錯(cuò)誤在所難免,歡迎各位指正。還有,本文僅供學(xué)習(xí)交流使用,希望不會(huì)侵犯微軟的版權(quán)。