让VS2010支持Windows2000

2015-10-20 14:21 375人阅读 评论(0) 收藏 举报

 分类:

学习笔记(33)  技术心得(1) 

用Visual Studio 2010编译的程序无法在Windows 2000,Windows XP SP1上运行,经分析主要原因是VS2010的运行库调用了kernel32.dll的DecodePointer和EncodePointer两个函数,而这两个函数仅在Windows XP SP2及以上版本的Windows中才有,关于这两个函数的信息,网上有大量的信息可以参考,不再赘述,我们仅从实用角度说明如何让VS2010支持Windows 2000。

首先生成一个crack.asm文件,内容如下:
.model flat

.data
[email protected] dd dummy
[email protected] dd dummy
EXTERNDEF [email protected] : DWORD
EXTERNDEF [email protected] : DWORD

.code
dummy proc
mov eax, [esp+4]
ret 4
dummy endp

end

然后进入VS2010的命令行模式,一定要进入VS2010的命令行模式,不能简单的执行cmd,废话少说,继续,执行以下命令编译crack.asm:
ml -c crack.asm
编译完得到crack.obj

第三步,将得到的crack.obj添加到需要支持Windows 2000的项目里,直接添加即可,无需其他配置。编译后用depends看一下对kernel32的依赖,发现已经没有了EncodePointer和DecodePointer的依赖。

如果不习惯使用obj文件,也可以用以下命令将obj编成lib文件:
lib crack.obj
将得到的crack.lib文件添加到项目中即可,但必须确保链接顺序先于kernel32.lib。

如果运行时出现不是合法的Win32程序,注意以下两处:
1. targetver.h文件中的_WIN32_WINNT值,VS2010默认使用SDK的最高版本,需要手动改为需要的版本:
#define _WIN32_WINNT 0x0500
#include <SDKDDKVer.h>
2. Minimum Required Version,此设置影响PE文件头中的VERSION信息,VS2010默认设置为5.1,需要手动改为需要的版本:
对于Win2000为 5.0

时间: 2024-08-05 06:44:02

让VS2010支持Windows2000的相关文章

让Vs2010支持 Css3+HTML5

第一步. 先到微软官方下载一个 Microsoft Visual Studio 2010 sp1 . 给传送门:.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5 下载到这个东东 --- 第二步. 打开安装软件安装. 升级安装略久 ---- 第三步. 进入 工具 - > 选项 然后选择 文本编辑器  - > HTML  - > 验证 . 你现在应该能够选择HTM

让VS2010支持HTML5

一.升级Microsoft Visual Studio 2010到Microsoft Visual Studio 2010 sp1 1.升级方法一这里直接给传送门了 Microsoft Visual Studio 2010 Service Pack 1升级文件下载地址: http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5 2.升级方法二打开自己的wi

VS2010 支持 CSS3

在安装Standards Update for VS2010 SP1后,VS2010中没有CSS3.0问题,以下是我的解决方法 1.首先去官网下载 CSS 3 Intellisense Schema 网址:http://visualstudiogallery.msdn.microsoft.com/7211bcac-091b-4a32-be2d-e797be0db210/view/Discussions/1 2.安装 3.Win+R 输入 regedit 打开注册表 4.找到 [HKEY_LOCA

内网准入解决方案

内网准入解决方案 网络准入控制系统,主要功能是通过客户端设置可信网络,该可信网络内部互信计算机间可以正常相互访问,非法计算机未经授权不能接入可信网络.可信网络内部终端也不能非法外联非可信网络,通过本系统可以低成本实现内外网软件隔离和终端信息安全防护,对于已经实施内外网物理隔离单位还可以作为终端信息防护的解决方案,防止终端因为非法接入.外联导致泄密,网络准入系统,主要功能是通过软件方式设置可信网络,是以终端准入控制的一种内网准入控制软件,相比其他内网准入控制系统更安全,更可靠,更容易部署. 认证数

ffmpeg未整理好,有时间整理下

v  容器(Container) v  容器就是一种文件(封装)格式,比如flv.mkv.ts.mp4.rmvb.avi等.包含下面5种流以及文件头信息. v  流(Stream) v  是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据. v  帧(Frame)  代表一幅静止的图像,分为I帧,P帧,B帧. v  编解码器(Codec) v  是对视频进行压缩或者解压缩,CODEC =CODE(编码) +DECODE(解码) v  复用/解复用(mux/demux) v  把不

QT5静态编译教程,主要针对vs2012(渡世白玉)

QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错. 注:我自己编译的环境是:win server 2012 dc版 , vs2012 with update1,qt-everywhere-opensource-src-5.0.2,perl和rupy都是在qt官方给的地址下的最新的X64的,python是2.7 X64的... 本文主要针对qt 5.X版本,qt4.X的依赖没那么多,可以酌情参考下,

[C/C++11语法]_[0基础]_[lamba 表达式介绍]

场景 lambda 表达式在非常多语言里都有一席之地,由于它的原因,能够在函数里高速定义一个便携的函数,或者在函数參数里直接高速构造和传递. 它能够说是匿名函数对象,一般仅仅适用于某个函数内,仅仅做暂时使用. 通常是须要在对某个数据暂时特殊处理时使用,比方对某种參数类型进行限定的再次封装和行为约束. 參考 1. C# Lambda表达式及其优势 2. Lambda Expressions in C++ 3. Exception Specifications (throw) (C++) 4. no

JavaScript开发之旅(2):幻灯片播放代码(等比缩放)

在web开发过程中,少不了使用幻灯片展示.我做的这个幻灯片要放到webbrowser控件里面展示.而我需要做四宫格,九宫格,十六宫格,可能还需要做一个十二宫格.每个宫格放一张图片,一个标题和价格.图片通过JS来读取.一屏一屏的切换.当然,切换可以自己设置切换样式,这些就是我的这个小动画需求. 正因为如此,我必须要考虑下面这两个问题: 第一个问题,就是我做页面可以在VS2005中的控件webbrowser中正常显示. 回答:通过查资料我知道了. VS 2008 SP1 在Visual Studio

[C/C++11语法]_[初级]_[lamba 表达式介绍]

场景 lambda 表达式在很多语言里都有一席之地,因为它的原因,可以在函数里快速定义一个便携的函数,或者在函数参数里直接快速构造和传递. 它可以说是匿名函数对象,一般只适用于某个函数内,只做临时使用. 一般是需要在对某个数据临时特殊处理时使用,比如对某种参数类型进行限定的再次封装和行为约束. 参考 1. C# Lambda表达式及其优势 2. Lambda Expressions in C++ 3. Exception Specifications (throw) (C++) 4. noexc