我写了一个小程序,这个程序可以自己修改自己以保存用户输入的资料,程序在C:\Documents and Settings文件夹下面的任何地方都不能正常保存资料,我一保存,C盘根目录下就会多一个名叫Documents无后缀名的隐藏文件(其实就是我保存前程序的拷贝,是windows自动生成的),等我的程序退出了,这个文件就会自动覆盖我修改好的程序文件,导致保存的资料被清除;不知道这是windows的功能还是什么原因,也不知道还会在其他什么文件夹下出现同样的问题,谁能帮我解释一下?我的系统是WindowsXP SP2

解决方案 »

  1.   

    其实就是类似于自动升级程序,比如我的程序叫做1.exe,运行以后,如果有要保存用户输入,我就用TMemoryStream装入1.exe,然后把用户的信息写在TMemoryStream尾部,然后把TMemoryStream保存到临时文件夹,假设临时文件夹的文件叫2.exe,同时还释放一个事先写好的update.exe到临时文件夹,然后退出程序,运行update.exe,update.exe的任务就是用2.exe覆盖1.exe,从而实现程序更新;
    但是,如果1.exe在C:\Documents and Settings下,就无法更新,系统总是把旧的文件覆盖到我改好的exe文件
      

  2.   

    其实不是什么文件保护的问题,应该是1.exe给update.exe传递启动参数错误的问题;
    比如你想告诉update.exe你的程序是"C:\Documents and Settings\1.exe",结果update.exe把这个参数看成了3个参数"C:\Documents","and","Settings\1.exe",于是C:\下面就有了Documents这个文件,实际上Documents才是被更新的文件,你可以试试看
    实际上你的程序在任何名称中有空格的文件夹下运行都是有问题的...
      

  3.   

    -_-!!原来如此,我还以为windows有这种功能呢,呵呵