今天一早看到消息通知我们不要更新微软补丁,我觉得很好的,大家互相提醒!后来我发现原来不关我的事,听说 Access 2003 才有问题,不过我有非常多的客户还在用 Access 2003 的!所以我又开始关注了!
虽然我大部分的客户都是离线模式运作的(因为都是其企业的关键系统,如收银机、成本核算中心、生产进度控制中心等,都不能让员工联网、接U盘、不需要更新的),但总有些用户是自己家里用的,我也给他们打电话了解情况了,可是没有人出现问题!我就纳闷了,我就看看这个“传闻”是哪里来的。
我看到“传闻”的来源原来说 progressBar,.... 等的控件不能运作,那我就知道原因了,就是控件的问题。
在不久前很多人开发的系统都出现
“You do not have a license to use this control”
这是什么来的呢?就是用户没有权限使用那些控件。
那为什么在系统内的都没权限使用的呢?
因为这是 微软 分发给开发用户的东西,而不是给执行用户的!
那些控件是原来给
购买了VB,购买了VS 的开发者,让他们开发用的,执行使用其实还要另外执行License的。
你们会出现错误的原因,就是没有使用权的用家。安装了 VB6 的用户就算你在 Word, Excel 用到这些控件也是允许的!
大家又会奇怪了,怎么你没买的东西、没权用的东西会跑到你的电脑上面去了?
原因就是你们用了一些下载的、人家给你的东西,是调用这些控件的程式,包括安装了那些程式时候给你安装了这些控件。正所谓不知者不罪!罪过的是打包这些东西给你的开发人员。他们给你的是不保证能运行的东西,用的是微软的东西,但是你们没有使用权的。
我估计你们打开 Access 是没有事的,就是打开某个项目才会有问题的!那些项目就是参照到一个自定义的库,accde 或者已经改了名字而不能打开看内容的 Access 程式库。
所有的Access的开发工具,代码、控件等,都是以这个形式给你们用的。反正你是不能查看那些代码,不能修改他的内容,你只能不用这个工具。如果供应商是有保证的,你是付费的,还可以根据购买合同看能不能要人家索偿!
出事的控件包括了:
ADO Data Control 6.0 (OLEDB) - Msadodc.ocx
Chart Control 6.0 - Mschrt20.ocx
Chart Control 6.0 (OLEDB) - Mschrt20.ocx
Comm Control 6.0 - Mscomm32.ocx
Common Dialog Control 6.0 - Comdlg32.ocx
Data Bound Grid Control 5.0(SP3) - Dbgrid32.ocx
Data Bound List Controls 6.0 - Dblist32.ocx
DataGrid Control 6.0 (OLEDB) - Msdatgrd.ocx
DataList Control 6.0 (OLEDB) - Msdatlst.ocx
FlexGrid Control 6.0 - Msflxgrd.ocx*
Internet Transfer Control 6.0 - Msinet.ocx
MAPI Controls 6.0 - Msmapi32.ocx
Masked Edit Control 6.0 - Msmask32.ocx
Multimedia Control 6.0 - Mci32.ocx
RemoteData Control 6.0 - Msrdc20.ocx
PictureClip Control 6.0 - Picclp32.ocx
Rich TextBox Control 6.0 - Richtx32.ocx
SysInfo Control 6.0 - Sysinfo.ocx
Windowless Controls 6.0 - Mswless.ocx
Windows Common Controls - Comctl32.ocx
Windows Common Controls 6.0 - Mscomctl.ocx
Windows Common Controls-2 5.0 (SP2) - Comct232.ocx
Windows Common Controls-2 6.0 - Mscomct2.ocx
Windows Common Controls-3 6.0 - Comct332.ocx
Winsock Control 6.0 - Mswinsck.ocx
今天的更新,是微软的策略的一部分:
1. 要尽快不支持 WinXP。这个支持耗掉了他们太多的资源,已经是超过十年的商品了,还要支持,那些补丁的大小已经比起原来的衣服都大了!
2. 要尽快不支持 VB6。微软早就说明放弃支持的了。这些控件就是VB6的,有这些VB6控件,还是会很多人不转用 VS。
3. 就是要推下一轮的 WindowsRT。既然Windows Runtime 是 所有 .net framework 的集合,又是 支持 html5+css3+js 的,也是Windows 8 独有的核心东西,也是电脑、平板、终端共用的 framework。
4. 根据统计,Win7升级率不高,Windows Vista 是过度产品,然而超过50%的 Windows用户还是在用 WindowsXP。
综合以上的,微软的策略就是要一直有高占有率,包括 OS, 浏览器,移动系统,只能“赶鸭子”了!在前面给你饵诱,说明支持 html5+css3, js 速度是以前的几倍,吸引你取用(虽然实际只是其他浏览器相约的性能);后面就鞭策我们、在赶我们入笼,没办法支持 WinXP, VB6, Office 95了等(即使技术上是支持的、兼容的)。
不管微软的策略如何,我们就得跟随,谁叫我们已经在用WindowsXP 和 Access 了,上贼船了!
如果被微软屏蔽了,那怎么办?我也不知道!不过可以尝试的就是再下载那些OCX的运行版本(Runtime Version,不能用开发版本 Development Version) 从新以 regsvr32 注册一次看可不可以吧!其他开发语言的人是这样处理,有些说可以有些说不可以,我相信还有别的环境因素要处理的。
不过,可以的话还是卸掉那些会用到这些控件的软件,乖乖的用Access里面提供的东西吧!因为这只是微软的第一波而已,以后还会陆续“砍掉”历史遗留下来的问题的。
开发的人就尽快改用 .net framework 了。Winform , WPF 等很快又过时的了,尽快学WinRT 吧!
我就有点运气,打从 .net framework 1.0 到 2.0 后,我就不安装 .net framework 了!而且我也放弃了使用 VS 6.0后的东西,反正要 .net framework 的我都拒绝学习;因为我觉得 vs 2003,2005,2008 发展得快是好,但是缺乏与前面版本的支持,做出来的东西,很快又过时不适用了!所以弃暗投明不上贼船!
我的运气就是 我是利用Access的人,我不懂VS,所以没有用过那些控件;反正标安装Windows+Office没有的控件,我就不会给用户使用的,因为Access能给了我的,我觉得完全足够我这20年的应用。
技术上的原理就很清楚了,怎么解决还是要你们研究了!
最简单的是 ====》安装个 VB6 吧(小心绿色的可能注册不全的)!
常用的官方补丁
http://acitvex.microsoft.com/controls/vb6/Mshflxgd.cab
http://activex.microsoft.com/controls/vb6/MSCOMCTL.CAB
http://activex.microsoft.com/controls/vb6/MSCOMCT2.CAB
下载后解压,右击 .inf 选安装就可以了!不用什么regsvr32 的!