西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页西西教程操作系统 → 修改注册表项 解决Windows7下玩老游戏花屏的终极办法

修改注册表项 解决Windows7下玩老游戏花屏的终极办法

相关软件相关文章发表评论 来源:本站整理时间:2011/1/3 0:10:43字体大小:A-A+

作者:佚名点击:2506次评论:0次标签: 星际争霸 花屏 Windows7

  • 类型:手机工具大小:2.8M语言:中文 评分:6.8
  • 标签:
立即下载
在Windows7下玩老游戏,如星际争霸,会出现花屏的现象。

这个现象的原因是Win7的DirectDraw的256色调色板的兼容性问题,据说是默认配置下,程序无法获取调色板锁。

一个简单的解决方法是杀掉explorer进程,估计这样就会停止桌面主题修改调色板。

但是这不是一个一劳永逸的办法。

经过在网上搜索,发现有这样一个解决方案。

DirectDraw有一个注册表项,用于开启兼容模式,位于

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility

(Win7 x64)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectDraw\Compatibility

(Win7 x86)

在这个注册表项下添加需要启用兼容模式的exe,如:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\Compatibility\StarCraft116]
"Name"="Starcraft.EXE"
"ID"=hex:ca,89,65,49
"Flags"=hex:00,08,00,00

(Win7 x64)

就可以使得对应的程序运行于兼容模式下。

这三个键值中,Name是程序的文件名,Flags是常量,而ID是程序的时间戳。

以星际争霸1.161为例,我们可以使用CFF Explorer打开Starcraft.exe,然后在Nt Headers-File Header中找到TimeDateStamp一项,发现其值为496589CA。

将该整数倒过来写作低字节优先的形式(little-endian),就是ca,89,65,49,这就是注册表中的ID值。

网上的有解决方案声称HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DirectDraw\MostRecentApplication下的ID记录的就是上一次运行的游戏的时间戳。

但是我验证的时候发现不一致。

通过此方法,星际争霸已经可以在我的机器上正常运行。

此外,还有一种方法是通过Hook掉DirectDraw的函数来完成的,见

http://sol.gfxile.net/ddhack/

不过这个实现是通过软件方法来进行 索引->颜色 转换的,没有使用到显卡加速,在运行星际争霸时比较卡。

但这种方法只需要在程序文件夹下放入一个ddraw.dll的文件就可以实现,比较方便。

也许以后会有人通过DirectX或者OpenGL来模拟DirectDraw的功能,能够比较完善的解决这个问题。 

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    第 1 楼 浙江联通 网友 客人 发表于: 2011/12/8 0:51:47
    完全看不懂你写的是什么~~~

    支持( 0 ) 盖楼(回复)

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)