首页
社区
课程
招聘
[求助]SHFileOperation在WIN7上跟XP上的区别?
发表于: 2013-6-5 16:57 5735

[求助]SHFileOperation在WIN7上跟XP上的区别?

2013-6-5 16:57
5735
想重命名一个文件(夹)用了SHFileOperation函数
测试代码:
	TCHAR oldFileName[MAX_PATH]={0};
	TCHAR newFileName[MAX_PATH]={0};
	lstrcpy(oldFileName,_T("C:\\3.txt"));
	lstrcpy(newFileName,_T("C:\\6.txt"));
	SHFILEOPSTRUCT FileOp={0};
	FileOp.pFrom=oldFileName;
	FileOp.fFlags=FOF_NOCONFIRMATION;
	FileOp.pTo=newFileName;
	FileOp.wFunc=FO_RENAME;
	FileOp.hwnd=NULL;	
	UINT RenameErrorCode=SHFileOperation(&FileOp);
	if(0==RenameErrorCode)
	{
		MessageBox(_T("重命名成功!"));
	}
	else
	{
		MessageBox(_T("重命名失败"));
	}


试验结果:
1 XP上如果本身c:\6.txt存在的情况下会弹出窗口表面重命名失败;
2 WIN7上本身c:\6.txt存在的情况下却返回重命名成功。

不知道WIN7是怎么搞的,按理说应该失败才对,请问这里是啥情况,如何让在WIN7上也出现跟XP一样的效果---重命名失败呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
about session!!..you can try to run at administrator in WIN7 ..then you will know.
2013-6-5 17:08
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
我在WIN7上是以管理员权限运行的,效果一样,WIN7上照样弹出:重命名成功,I don't konw why,please tell me!thanks all the same.
2013-6-5 17:29
0
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
或许有不一样吧,你追一下SHFileOperation函数就了解了嘛。看压入参数,执行流程,返回结果..一般来说应该没啥区别,shell的函数改动了没啥意义才对。
2013-6-5 17:48
0
雪    币: 132
活跃值: (214)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
用变相的方式解决了这个问题,重命名前判断是否存在这样的文件(夹)然后再进行SHFileOperation操作,thanks all the same,simida!
2013-6-6 11:48
0
游客
登录 | 注册 方可回帖
返回
//