为加密需要,EXE做成了从内存中加载。

解决方案 »

  1.   

    確認win7是32位的還是64的?若是64位,建議貼出加載exe部分的代碼出來。另一種可能,個人猜測,在vista以后(包括vista),引入了Address Space Layout Randomization——ASLR,可能與這個有關...
      

  2.   

    不释放直接运行res里面的exe可以实现。windows 7 不支持的原因是因为那个pas中没有考虑。需要重写,比较费事。另外楼主,你难道没有发现内在加载一般会被杀毒软件当成病毒吗?我现在都不敢用了。
      

  3.   

    那个不支持的原因可能是Vista和7下面的UAC机制,Shellexecute指定管理员身份运行应该可以,另外不能往系统目录写东西,否则也有可能失败
      

  4.   

    32位的,以administrator身份运行也不行
      

  5.   

    若是獨立創建進程出來,而不是在宿主程式里執行;那么即使宿主提升了權限,里面的exe,也還是要提升權限的
      

  6.   

    我目前的发现是:win7可以执行,但是存在一定限制
      1、Win7 系统 API 文件发生较大变化,你的程序如果直接加载某个DLL,可能无法执行,因为API已经不在这个DLL文件中了
      2、如果存在读取硬盘序列号等核心级操作,必须使用administrator用户或“以管理员身份运行”,普通用户没有权限,程序根本就不执行
      3、内存加载时固态外部函数调用存在问题(未清除原因,好像不再自动判断.加载外部函数),动态调用可以
      希望对大家有帮助!从这几个方面考虑
      

  7.   

    Win7中 GetThreadContext 调用失败,内容是错误的,因此随后的处理均无效,目前还不清楚GetThreadContext失败的原因