同样的程序在c++ builder6与c++ builder2010运行结果不一样???

zheguzai000 2012-05-14 04:18:09
刚接触C++ buidler没多久,感觉c++ buidler2010设计界面时比较方便,所以就用了下,结果c++ buidler6下面编译和c++buidler2010下编译运行结果有些不一样。


在CB6下面无论是运行编译后弹出的应用程序还是运行编译生产的exe可执行文件结果都是一样的。但是cb2010只有点击绿色编译按钮后弹出的应用程序运行结果是正常的,直接点击生成的exe文件运行结果是不正常的(跟CB6下面运行不一样)。。

不知道什么问题,弄了好久都不行,设置了编译选项也不行,有人知道是什么问题么,帮忙下,感激不尽/。。。。。
...全文
355 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zheguzai000 2012-09-27
  • 打赏
  • 举报
回复
提权代码也找到了,c++ builder2010中也实验过了,可以,Qt中也实验过了,也是可以的,下面有两种




//提升权限需要实用到"ntdl.dll"库,此库可以在c:\windows\system32目录下面 找到



//以下两种代码都可以

//1.第一种

HMODULE b=LoadLibraryA("ntdll.dll");
typedef int(__stdcall *Func_RtlAdjustPrivilege)(int,bool,bool,int *);
Func_RtlAdjustPrivilege bb=(Func_RtlAdjustPrivilege)GetProcAddress(b,"RtlAdjustPrivilege");
int RN=0;
bb(20,true,false,&RN);


//2.第二种



#define SE_DEBUG_PRIVILEGE (20)

typedef long NTSTATUS;

typedef NTSTATUS (WINAPI *_RtlAdjustPrivilege)(ULONG /*Privilege*/,BOOL /*Enable*/,BOOL /*CurrentThread*/,PBOOL /*Enabled*/);

_RtlAdjustPrivilege RtlAdjustPrivilege = (_RtlAdjustPrivilege)GetProcAddress(GetModuleHandleW(L"ntdll"), "RtlAdjustPrivilege");

BOOL bResult;
RtlAdjustPrivilege(SE_DEBUG_PRIVILEGE, 1, 0, &bResult);



zheguzai000 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
呵呵,专家来也。
CB6中默认是在调试器中运行的,你的程序有调试特权,所以。。。楼主里边调用诸如OpenProcess...或VirtualMemory之类的远程内存读写操作的函数了吧,因为失败了,所以返回0。正常运行下你程序的特权等级不够,请添加相关提升特权等级的代码(似乎加上远程内存读和写两个权限就够了)。
[/Quote]

非常感谢,搜索了下,找到一篇文章,好像还要载入一个DLL的库
http://bbs.pediy.com/showthread.php?t=76552
bigfog 2012-05-17
  • 打赏
  • 举报
回复
楼上说对了
BORLANDSUN 2012-05-16
  • 打赏
  • 举报
回复
呵呵,专家来也。
CB6中默认是在调试器中运行的,你的程序有调试特权,所以。。。楼主里边调用诸如OpenProcess...或VirtualMemory之类的远程内存读写操作的函数了吧,因为失败了,所以返回0。正常运行下你程序的特权等级不够,请添加相关提升特权等级的代码(似乎加上远程内存读和写两个权限就够了)。
zheguzai000 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

怎么个不正常法?
[/Quote]

首先我写了这么一个小程序,看下图

然后写了另外一个程序用于读取这个程序里的信息,其实大家都知道这个是干嘛的,自己玩玩。。。。
但是写的程序只有在IDE中点击编译运行的时候可以读取信息,看下图

但是直接运行生成的文件是不能读取到信息的。。。。,看下图显示


以上运行在CB2009和CB2010下面都是一样的情况,但是,在CB6下面上面两种情况都能读取到信息。。。。
请问是什么问题啊,有人遇到过么,有遇到的人说下。。。。

程序和源码在这里大家帮我试试看,是啥问题,谢谢了。。。。
http://www.vdisk.cn/down/index/10176205
dataxdata 2012-05-15
  • 打赏
  • 举报
回复
这个要具体情况具体分析
hyz_cs 2012-05-14
  • 打赏
  • 举报
回复
怎么个不正常法?
cczlp 2012-05-14
  • 打赏
  • 举报
回复
据说在IDE中运行优先级比单独运行时候高.
zheguzai000 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
刚接触C++ buidler没多久,感觉c++ buidler2010设计界面时比较方便,所以就用了下,结果c++ buidler6下面编译和c++buidler2010下编译运行结果有些不一样。


在CB6下面无论是运行编译后弹出的应用程序还是运行编译生产的exe可执行文件结果都是一样的。但是cb2010只有点击绿色编译按钮后弹出的应用程序运行结果是正常的,直接点击生成的exe文件运行结……
[/Quote]



没用的,我的可以生成可执行文件,不论是动态库还是静态库都可以,只是CB6和CB2010下面显示不一样
睿冰 2012-05-14
  • 打赏
  • 举报
回复

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧