首页
社区
课程
招聘
[求助]会MFC的高手过来看看
发表于: 2007-5-29 09:02 5680

[求助]会MFC的高手过来看看

2007-5-29 09:02
5680
我在用CFile类来打开一个文件(PE文件)时,若此文件被LoadPE打开后,我就打不开了,我想,这个文件应该是被LoadPE以独占的方式打开的,所以,我就无法再打开.

我又发现,LoadPE打开一个PE文件后,但WinHex,PEiD之类的软件还是可以照常打开它,

这种方式是如何实现的呢? 或者是我打开的方式有问题?

我打开文件的代码如下:

CFile file;
if(!file.Open(strFilePath,CFile::modeRead))
{
        MessageBox(strFilePath + " 打开失败!","错误");
        return FALSE;       
}

谢啦!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
2
文件名对不对呀`就是那个strFilePath
2007-5-29 09:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
文件名不会错,这里只是截选程序中的一部分代码,strFilePath就是我要打开的文件路径名称,

正常情况下,如,用我的程序打开记事本程序,运行正常

若用LoadPE打开记事本程序后,再用我的程序来打开记事本程序,就会弹出"打开失败"的对话框

谢谢关注
...
2007-5-29 10:08
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
哦``忘了!!记事本程序好像只能单开`
2007-5-29 10:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LoadPE打开记事本后,Hex Workshop可再次打开它

WinHex,PEiD也不能打开它了, 但Hex Workshop是如何实现的呢?
2007-5-29 10:49
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
6
应该是内核对象`
2007-5-29 11:11
0
雪    币: 305
活跃值: (36)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
7
共享 属性 看看了
2007-5-29 11:21
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
试试加上个CFile::ShareDenyNone属性
2007-6-1 12:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
OK, 多谢楼兄指点.调试通过.

其实,之前我也看过MSDN上说明:
CFile::shareDenyNone   Opens the file without denying other processes read or write access to the file.

当时,我理解成了:以共享方式打开文件(不拒绝其它进程来访问此文件), 就干脆没试它.

现在看来,要理解成: 不管其它进程是否在访问此文件,仍然打开它

心得: 英语一定要学好!!!

谢谢楼兄!!!
2007-6-1 13:53
0
游客
登录 | 注册 方可回帖
返回
//