查看文章
 
[原创]疯狂农场3启动出错解决 - 附简易加载器
2009-08-18 19:08

Update: 下载地址已经更新,SkyDrive改版之后原地址失效,东西虽还在但换了新地址

注:加载器已经转移到此处下载,原网盘太麻烦了

Tag: ShellExecute, x64, FarmFrenzy3, MFC

前几天在hxgame.net下了疯狂农场的最新作疯狂农场3,一直没时间上手。今天想起来装下试试,可是到运行的时候Shability了:
运行就弹出错误提示:
Critical error in the game. Download and install the updated game from the official site
www.alawar.com/game/farm-frenzy-3

试过了XP SP3和Vista SP2的兼容模式都不行,于是去原页面看了评论,有人反映同样的问题,但是好像没解决方案,然后搜到某贴吧里去,一人给答案:x64不能玩。于是又shability了……

怀着好奇的心情重装了游戏,记得安装最后一步,点完成之前可以选上“立即运行XX游戏”这一项,选中之后点完成,成功运行。

于是在任务管理器里做一些观察,在64位Windows环境下,所有的32位程序运行时会加上"* 32"这样的后缀,以标识此程序当前运行在WOW64环境(注1)下。安装程序本身自然是32位的,然后运行32位的农场3执行文件,这种情况是正常的。直接执行农场3的执行文件,因为是同样是32位的,所以也有了"FarmFrenzy3.exe * 32"字样,但既然弹出上面那个对话框报错,于是怀疑:WOW64可能无法初始化FarmFrenzy3.exe的执行环境,然而之前的安装程序是可以正常初始化的,通过安装程序运行的子程序(FarmFrenzy3.exe),继承了一定的父进程(setup.exe)的设置,于是就能正常运行了。

至于为什么该游戏会与WOW64冲突这无从知晓,由于众所周知的原因,今天打开墙外网站都比较慢,所以游戏官方主页没能打开,如果有更新的话也许可以使用。现在只能自己动手了:通过正常运行的32位程序启动游戏能正常运行,既然安装程序不可能总启动,那就写一个农场的启动器呗:

用法很简单,选择Browse找到FarmFrenzy3.exe,点击Run执行,也可以直接在上面文本框输入完整路径后点击Run,程序在当前目录生成一个ExePath.txt的文件记录上次运行成功时的路径,下次启动时直接读取该路径,不必再重新选择。

本工具使用MFC静态链接,体积有点巨,但我还不会Win32加按钮,所以没办法了- -||
Browse按钮使用了CFileDialog类,Run按钮使用了ShellExecute()函数,写ExePath.txt部分用的是标准C++文件流。可以在我的网盘里下载,网盘里有个Blog附件的子文件夹,下面的FarmFrenzy3_StartShell.7z文件即是。
Win7 RC x64 + VS2008 Pro下调试通过,如果不能运行或者网盘失效可以给我另外发消息索取程序或者源码。
无版权限制,随便用。

注解:
(1). WOW64,即Windows-32-On-Windows-64,就是将32位程序运行到64位系统下的一个Windows环境,它支持几乎所有驱动以外的软件运行,同时,按照MSDN的某句话(以前看过,暂时找不到出处了),这样64位环境运行32位程序是没有性能损失的。


类别:小工具||添加到搜藏 |分享到i贴吧|浏览(7360)|评论 (0)
 
最近读者:
 
网友评论:
本篇日志被作者设置为禁止发表新评论

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu