zhanSL
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2010-07-13
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望273点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
阅读:1135回复:4

文件替换问题

楼主#
更多 发布于:2004-06-11 15:52
如果一个文件正在使用,如何将这个文件替换掉,这样下次启动时可以解决bug???高手请指招。
zhanSL
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2010-07-13
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望273点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-18 16:04
问题解决了,重新启动后文件被覆盖,源文件消失!谢。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-15 14:13
如果一个文件正在使用,如何将这个文件替换掉,这样下次启动时可以解决bug???高手请指招。

方式大致这样,使用MoveFileEx函数,在dwFlag中包括

比如你要将C:\A.dll替换为D:\A.dll,这样调用
MoveFileEx("D:\\A.dll" , "C:\\A.dll" , MOVEFILE_REPLACE_EXISTING|MOVEFILE_DELAY_UNTIL_REBOOT) ;
注意:你这样D:\A.dll变会丢失。

我没有测试,实在没有那么多时间对所有问题都一一写代码测试,你测试一下然后把结果告诉我。谢谢
msn: mfczmh@sian.com
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-15 14:04
试一试这段代码
    char cTempFileName[0x80];
    char cTempPathName[0x100];
    char cFileName[0x100];
char szFileToDel[64];

strcpy(szFileToDel,"C:\CreateLgtFile.exe");
    sprintf(cTempPathName, "%c:\", szFileToDel[0]);
    if(GetTempFileName(cTempPathName, "_@", 0, cTempFileName) == 0){
        return ;
    }

    if(MoveFileEx(szFileToDel, cTempFileName, 1) == 0){
        return ;
    }

    if(MoveFileEx(cTempFileName, NULL, 4) == 0){
        return ;
    }

    return ;
 


这是什么意思?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
ysz_oo
驱动牛犊
驱动牛犊
  • 注册日期2003-03-08
  • 最后登录2014-11-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望40点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-14 17:21
试一试这段代码
    char cTempFileName[0x80];
    char cTempPathName[0x100];
    char cFileName[0x100];
char szFileToDel[64];

strcpy(szFileToDel,"C:\\CreateLgtFile.exe");
    sprintf(cTempPathName, "%c:\\", szFileToDel[0]);
    if(GetTempFileName(cTempPathName, "_@", 0, cTempFileName) == 0){
        return ;
    }

    if(MoveFileEx(szFileToDel, cTempFileName, 1) == 0){
        return ;
    }

    if(MoveFileEx(cTempFileName, NULL, 4) == 0){
        return ;
    }

    return ;
游客

返回顶部