关于控件注册和使用许可问题的解决办法
2024-07-21 02:24:13
供稿:网友
本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。鉴于前一段时间受困于微软控件的授权问题,而且互联网上也很难找到问题的解决方案,这两天论坛中也不停有网友在问相类似的问题,特撰写此文,以飨vckbase各位网友。
大家都知道,对于普通的ocx控件,我们在发布时,使用安装软件拷贝到目标机器上然后再注册一下(或者手工拷贝然后用regsvr32注册)就可以了 。
但是对于微软提供的一些控件,比如 microsoft ado control,microsoft datagrid control等等,常常发现,在开发的机器上使用的好好的 ,但使用正常的发布流程,发布到目标机器上,就会出现“没有注册类别”的提示 ,软件无法使用等等问题。
究其原因,在于微软为了防止其软件被非法发布,所以增加了许可机制(license);按理说,只有开发环境才需要许可,而在目标码的环境中,应用程序可以正常使用的,只不过不能被其他的开发工具打开;为什么会与微软原先的想法违背,我就不得而知了。让咱们进入正题,说说如何解决这个问题。
首先,必须弄清楚许可信息的存储位置,告诉你,就在hkey_classes_root/licenses目录下。 接下来,需要知道哪个控件使用的是什么注册信息,在vs.net安装盘的一个目录extras/vb6 controls下,有一个注册文件vb6controls.reg,记录了vb6的大多数控件 的许可信息,下面是此文件的内容:
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
通常我们只要把这个文件导入到目标机器的注册表,即可解决困扰我们的控件授权问题了。不过在我的使用过程中发现有两个问题:
这里面的注释信息不准确,即可能标注是某个控件的许可,但用这个许可根本不行,不知道是微软故意的还是弄错了,比如 flexgrid control 6.0 的 许可应该是:hkey_classes_root/licenses/72e67120-5959-11cf-91f6-c2863c385e30=ibcbbbebqbdbciebmcobmbhifcmciibblgmf
许可信息不全,也就是说, 有一些控件的许可信息在这个文件里根本没有;
那我们怎么办呢?苦恼ing...。一拍脑袋,有了,既然我们已经知道其在注册表中的位置、并且在开发的机器上使正常的,何不直接从开发机器上把整个licenses目录下的注册信息都导出来,然后再导入到目标机器上,既省事,还不怕有漏网之鱼 :)呵呵,大家都明白了吧?
初次写文章,错误在所难免,欢迎各位指正。还有,本文仅供学习交流使用,希望不会侵犯微软的版权。