你的原来的帖子,我回了一个,去看看,回答我的几个问题 .
----------------------------------------
To teach a fish how to swim.

解决方案 »

  1.   

    就是用异常抓了以后得到如下信息:
    该进程无法文件c:\xxx\xxxxxxx\~DF49D7.tmp,因为该文件正在由另一个文件使用。
    我看了一下这个文件的属性是存档属性不过XXXXXXXX文件夹是隐藏文件夹。
    不会因为这个吧!!!!!!!
      

  2.   

    C:\Documents and Settings\Administrator\Local Settings\Temp\~DF1E0E.tmp
    LOCAL SETTINGS文件夹是隐藏属性。我现在取消了它的隐藏属性。
    可还是出现:
    exce.Message="该进程无法文件C:\Documents and Settings\Administrator\Local Settings\Temp\~DF1E0E.tmp,因为该文件正在由另一个文件使用。"当然该文件属性是存档属性!
      

  3.   

    不是你上面两个帖子说的原因. 应该就是文件正在独占的方式被使用. 我们无法拿到这个文件的句柄,比较挠头.一般要启动以后才能删掉,要在某个INI文件或者注册表里作一下设置.以前看到过,忘了.在去找找.
    ----------------------------------------
    To teach a fish how to swim.
      

  4.   

    突然想,API 回不会绕过这一层检验. 于是试着用DeleteFileA,结果还是不行,返回值为0,成功的返回为1.有没有人知道是不是在调用之前要作一些别的,要不要拿到系统的最高权限,还是要找进程怎么的?
    ----------------------------------------
    To teach a fish how to swim.
      

  5.   

    补充:
    windows 95下使用这个函数要小心——即使文件当前正由一个应用程序打开,该函数也会将其删除.我的是XP,其他的大家可以试试.
    ----------------------------------------
    To teach a fish how to swim.
      

  6.   

    找到一个有用的,MoveFileEx
    ----------------------------------------
    To teach a fish how to swim.
      

  7.   

    班门斧兄台。我看了半天这个API看得俺迷迷糊糊的。
    你看看我这样定义并这样调用应该没问题吧!
            [DllImport("Kernel32.dll")]
    static extern bool MoveFileEx(string fileName,string newFileName,uint falg);
    //调用,,,,,,,,,,,,,
    bool falg=MoveFileEx(tempPath,null,0);
    if(falg==false)
    {
    MessageBox.Show("删除不成功","Error");
    return;
    }
    本来IF可以去掉的。不过这是为测试是否删除成功。
    可好像还是没法删除。:(
    bool falg=MoveFileEx(tempPath,"",0);好像也不行。
    不会是我自已把参数给理解错了吧!呵呵!
      

  8.   

    去这儿看看,MSDN.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/movefileex.asp
    调试这个程序真难,要启动n次计算机.MoveFileEx 返回是int的.你的参数不对,bool falg=MoveFileEx(tempPath,null,0) 0是不可以的.
    就最后这个参数难写. 我也在调,谁先好了,谁把代码贴出来.还有,MSDN讲了一个注册表的键,有用,可以用来观察是否成功.有什么情况,及时交流. 
    ----------------------------------------
    To teach a fish how to swim.
      

  9.   

    http://support.microsoft.com/default.aspx?scid=kb;en-us;Q140570
      

  10.   

    我上一个帖子有一句不对, MoveFileEx是 bool的.我的调试通过.原因如下:
    我用的是MOVEFILE_DELAY_UNTIL_REBOOT选项,而我的文件是只读的.
    所以就一直没有删除.mybool = Win32Import.MoveFileEx("d:\\1.doc",null,4);这样一个新的问题又来了,只读文件如何删除.正在看.你的哪?
    ----------------------------------------
    To teach a fish how to swim.
      

  11.   

    差不多吧!
    foreach(string tempPath in tempFiles)
    {
    bool  falg=MoveFileEx(tempPath,null,5);
    if(falg==false)
    {
    MessageBox.Show("删除不成功","Error");
    return;
    } }
    这样好像通过了。没有报错!
      

  12.   

    MOVEFILE_DELAY_UNTIL_REBOOT 就是说重新启动后删除.你用的是哪一个选项?----------------------------------------
    To teach a fish how to swim.
      

  13.   

    我晕,你这样调试程序呀.不出错不一定就删除了.MoveFileExtempPath,null,5);无论用那个数字(0-128)都不出错,但是不是都后删除程序. 那段程序我早就出来了,但就是删除不了文件.按照我的步骤试一试:1. 建立一个文件: c:\1.doc.
    2. 用word打开这个文件.
    3. 运行你的程序.删除这个文件.
    4. 看看你的程序没有出错.
    5. 看看这个文件依然在c:\
    6. 重新启动计算机,你的文件才消失.还有,建议先用File.Delete删除文件,在异常中用你贴的程序.比较,重新启动计算机对用户来讲毕竟不方便.----------------------------------------
    To teach a fish how to swim.
      

  14.   

    说真的。我看那个API看得我迷迷糊糊的。呵呵!
    谢谢兄台!!!!!!!
    200分。你这样的人应该把你升级为高手。呵呵!
      

  15.   

    我晕,问题没有完你就结了贴. 我只好自己研究了,过些天我在贴出来.4,我是从1-128一个一个的试的,MSDN和其他的地方并没有告诉那些符号对应什么数值.
    这个问题我还要看的.最后,谢谢你的问题,是我学到了新的东西.而不是你的分.