2007 年,游子归乡。闲来无事,逛逛当地的电脑市场。我突然发现一家软件公司。很是惊喜。在和老板娘聊天过程中,我了解到老板的坚持和努力。
然而,我对老板的好感很快化为乌有。
事情是这样的,某天,小伙计回来告诉老板,他写的程序在客户的PC上无法运行,老板说,装套 XP 就可以了。小伙计说,客户买的品牌机,预装的正版 Vista 操作系统,然而,老板还是重复,装套 XP 就可以了。我很好奇,就向这个小伙计了解具体的表现,小伙计说,双击桌面快捷方式,毫无反应。我恍然大悟。因为我知道,那套程序是使用 VB6 写的。于是我告诉老板,问题出在应用程序清单上,网络上搜一下就知道怎么解决了。然而,老板无视,当然,我也无事。
且不说无视客户的无形资产,单仅对技术的追求,真的是配不上多年的努力和坚持。道不同不相为谋,我开始有意疏远他......
这种情况,当年在 VFP 上也是常见现象。各路大神各显神通,试图使 VFP EXE “正常” 运行在 Vista 之上。多年以后,尘埃落定。好像都解决了问题,但又好像又都没解决问题。问题出在哪里呢?UAC!也就是“用户账户控制”!
你可以使用记事本随意打开一个正常编译的 VFP EXE,然后,你会在其中看到一段明码的 XML。那就是 VFP 编译 EXE 时默认使用的内部“应用程序清单”。如果想让自己编译的 EXE,不受客户 PC 中 UAC 设置的影响,唯一的办法就算更改它。
2017年,我在梅子论坛试图长篇连载一个老美对这个问题的详细解释,但是,曲高和寡,没了兴致。刚才看了看,七年过去了,不过了了的 1800 次点击,23 次下载。
我在框架的项目钩子中内置了一段程序,当然,是抄那位老美的,在正常编译完 EXE 之后,会启动那段程序,更改 VFP 的默认清单。什么效果呢?就算无论客户PC中是否开启或关闭 UAC,VFP EXE 都默认以管理员模式启动。你所需要做的,仅仅就是将 EXE 拷贝到客户的机器上而无需多余的任何操作。这样,再也不会重现 2007 年我所看到的笑话。而你,也可以有意无意的在客户那里小小的显示一下自己的“高超”技术。
当然,如果没什么追求,这就可以了。但是,如果你想物尽其用,那么,还是要好好的琢磨一下这个“清单”。专业版框架所修改的清单,已经远远超过上述的目的,它还可以使 VFP EXE “察觉”到客户 PC 的显示比例,对框架中所提供的 VFP DLL 实施免注册,当然,也有办法对 VFP EXE COM 也实施免注册,只不过,这种需求不是很急。至于 OCX,如果你用心,自然也会在其中找到解决办法。我就见过倦猫实现过......
这其中,最重要的是让 VFP EXE 自适应客户 PC 显示器的显示比例。高清大屏时代,为了解决这个问题,多少人愁眉不展。传统的解决方法,估计就是使用也不知道谁写的一个 Resize 类,然后,让自己再多更多的白发。
专业版框架,无声无息中,就解决它了。