改变vfp可执行文件要的运行库位置和文件名

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在考试大论坛 考试大在线题库
  今天分析了一下如何将 vfp 的 exe 运行时要使用的运行库更名的问题。下面是分析结果,以 vfp9 + 简体中文 Windows 系统为例。
  我们知道,编译成 exe 的 vfp 程序要加载两个运行时库,它们的缺省名称为 vfp9r.dll 和 vfp9rchs.dll。vfp 在正常情况下查找和加载这两个 dll 的方式是这样的:
  1. 首先从注册表中(位置: HKEY_CLASSES_ROOT/VisualFoxProRuntime.9/Shell/Open/Command)读取运行库的文件路径和名称定义,通常是 C:/Program Files/Common Files/Microsoft Shared/VFP/vfp9r.dll,然后加载它。
  2. 加载成功的 vfp9r.dll 根据 Windows 确定要使用的语言资源文件 vfp9r???.dll,对于简体中文,使用 vfp9rchs.dll
  假定我们将这两个运行库文件更名为 aaa.dll 和 aaa.chs.dll,并放到 c:/windows/system32 下的话,如何让我们的 exe 仍能正常运行,又不影响其他 vfp 程序正常运行呢?
  首先,要使我们的 exe 不使用 HKCR/VisualFoxProRuntime.9/Shell/Open/Command 中的运行库缺省定义。先在注册表中增加一项我们要使用的运行库定义:
  Windows Registry Editor Version 5.00
  [HKEY_CLASSES_ROOT/MyRuntime/Shell/Open/Command]
  @="C://WINDOWS//system32//aaa.dll"
  打开记事本,贴入上面的内容并保存为 my.reg,然后双击这个文件导入到注册表中。下面修改 exe 让它来读取这个设置。
  使用任何16进制编辑器(例如:UltraEdit),在 exe 中查找 VisualFoxProRuntime.9,找到后将其改为我们刚定义的 MyRuntime(注意修改后的串不要超过原串长度,若长度小于原串的话,注意尾部要填一个 00)
  保存修改后的 exe 文件,现在我们的 exe 运行时将加载这个 aaa.dll 而不会再找 vfp9r.dll 了。
  接下来我们要让 aaa.dll 去找 aaa.chs.dll 而不找原来的 vfp9rchs.dll,仍用16进制编辑器,这次打开 aaa.dll,查找 VisualFoxproRuntime.9/Resources,看到紧接着的 VFP9R%s 了吗?就是它,将它改为 aaa.%s,由于我们的 aaa.%s 比 vfp9r%s 少一个字符,所以后面也要填一个 00。
  好了,保存好修改后的 aaa.dll。就这么简单,现在这个 exe 将加载 c:/windows/system32/ 的运行库 aaa.dll 和 aaa.chs.dll。

  2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  2009年全国计算机等级考试报名信息汇总

  2009年NCRE考试有新变化

  2009年全国计算机等级考试大纲

  2009年上半年全国计算机二级考试试题及答案

  2009年上半年全国计算机等级考试试题答案汇总

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答