程序已经做好,win7,xp下测试没问题,win2000测试提示:不合法的的win32应用程序。
Google一下,才知道vs2010不支持 xp sp2以下的系统,包括win2000。
网上说有一个方法,使用汇编函数绕过kernel32.dll,具体如下
http://ping235.blog.163.com/blog/static/44476138201191193644769/
但我调试了无数次,都不成功,win2000依然提示:不合法的的win32应用程序。有哪位朋友遇到过类似问题,有无解决办法?因为客户中确实还有使用win2k的。

解决方案 »

  1.   

    那篇文章不是有说如果运行时出现不是合法的Win32程序,注意以下两处么
      

  2.   

    不用MFC或dotNET,用纯C也不行?没搞过。
      

  3.   

    楼主提到的那个修改方法,我测试了是可以的,但是实在找不到win2000,只在xpsp1上测试了。
    如果还不行的话,你可以:
    editbin /VERSION:5.0 test.exe
    editbin.exe是VC++中的一个命令行工具,test.exe是你写的程序。
      

  4.   

    谢谢jiangsheng,DelphiGuy,现在已经不提示 “不是合法的Win32程序”但出现了“无法找到输入点 DecodePointer”,depend看了一下,发现依赖还在。难道我操作不对吗?
    请教以下两步具体如何操作:1、将得到的crack.obj添加到需要支持Windows 2000的项目里,直接添加即可,(具体如何添加?)
    2、如果不习惯使用obj文件,也可以用以下命令将obj编成lib文件:lib crack.obj,将得到的crack.lib文件添加到项目中即可,但必须确保链接顺序先于kernel32.lib。( 如何添加链接,才能确保链接顺序先于kernel32.lib?)
      

  5.   

    1.debug和release文件夹下,注意,是文件多的那几个2.一般自己添加的lib保证优先级比较容易,因为有路径的优先级可以设置。就是VC++ Directory里面设置新增路径即可但是系统的lib貌似都要优于自己添加的lib。(这个要自己研究下了。)
    3.另外,很多函数MSDN中都限制最低操作系统要求,这个也要注意。
      

  6.   

    1、将得到的crack.obj添加到需要支持Windows 2000的项目里,直接添加即可,(具体如何添加?)
    2、如果不习惯使用obj文件,也可以用以下命令将obj编成lib文件:lib crack.obj,将得到的crack.lib文件添加到项目中即可,但必须确保链接顺序先于kernel32.lib。( 如何添加链接,才能确保链接顺序先于kernel32.lib?)哪位高人指教一下,拜托了
      

  7.   


    把crack.obj直接添加到项目里面就行了.obj的链接顺序是不是先于lib?
      

  8.   

    vs2010库用到了DecodePointerDecodePointer RequirementsClient Requires Windows XP SP2.  
    Server Requires Windows Server 2003 SP1.  
    Header Declared in Winbase.h; include Windows.h.
     
    Library Link to Kernel32.lib.
      

  9.   

    http://hi.baidu.com/cppcoffee/item/6757e164eddf122d68105b09
      

  10.   

    谢谢,目前我是参考了这个方法,但还是提示“无法定位输入点 DecodePointer”,depend看是依赖还在。
    似乎这个汇编函数没起作用,还是我没加进去?尝试了4种方法都没起作用:我操作的方法是:
    1、ml 生成obj后,项目->添加现有项->选择obj。(没起作用,于是用下面方法)2、项目->属性->链接器->输入->附加依赖项:crack.obj,常规->附加库目录:D:\soft\myObj\debug,(也没作用,于是 编译为lib)3、项目->属性->链接器->输入->附加依赖项:crack.lib,常规->附加库目录:D:\soft\myObj\debug,(也没作用)4、#pragma comment(lib,"D:\\soft\\myObj\\debug\\crack.lib") 还是没作用
    以上4种方法都不起作用,都提示“无法定位输入点 DecodePointer”
      

  11.   


    由于我没装VC++的IDE,里面怎么设置我不敢保证。命令行下如此:cl /Ox test.cpp crack.obj
      

  12.   


    您具体是如何实现的呢,能否告知一下,万分感谢,我现在会提示“无法找到程序输入点 DecodePointer”,检查了
      

  13.   


    也试过08编译,不过修改的地方很多,CImage也不支持。
    现在总算在XP SP1下通过了,WIN2K还是有依赖的函数 HeapQueryInfomation,看来只能放弃win2k用户了。