分享

关于控件注册和使用许可问题的解决办法-.NET教程,组件控件开发:站长天空|虚拟主机资讯|...

 zybingliu 2007-09-26

鉴于前一段时间受困于微软控件的授权问题,而且互联网上也很难找到问题的解决方案,这两天论坛中也不停有网友在问相类似的问题,特撰写此文,以飨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目录下的注册信息都导出来,然后再导入到目标机器上,既省事,还不怕有漏网之鱼 :)呵呵,大家都明白了吧?
  初次写文章,错误在所难免,欢迎各位指正。还有,本文仅供学习交流使用,希望不会侵犯微软的版权。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多