本帖最后由 PC_9527 于 2011-08-13 11:19:15 编辑

解决方案 »

  1.   

    独占 用 OF_SHARE_EXCLUSIVE 试试
      

  2.   

    OF_SHARE_DENY_READ 是共享读,  别的进程可以打开读取这个文件,不能写入这个文件。
      

  3.   

    可以指定这个:OF_SHARE_DENY_NONE 
      

  4.   

    试过了,仍然是没用,XP下可以。OF_SHARE_DENY_READ是其它进程可读???不对吧?
      

  5.   

    我是用管理员身份运行的程序。我也怀疑在Win7系统,文件读写权限是由系统来指派,而不是第三方的程序。关于这点还要高手来证实一下。
      

  6.   


    也不行,但是CreateFile在XP也是可以的,正在翻阅闲置已久的《Windows核心编程》
      

  7.   

    我试的没有问题啊,
      TCHAR szFileName[] = _T("C:\\temp\\myini.ini");  HFILE h_File = HFILE_ERROR;
      OFSTRUCT ofStruct={ sizeof(OFSTRUCT) };
      h_File = OpenFile(szFileName,
         &ofStruct, OF_READWRITE|OF_SHARE_EXCLUSIVE);
      CString szMsg;
      if(h_File == HFILE_ERROR)
      {
        szMsg.Format(_T("OpenFile 失败,错误代码:%ld"),
          GetLastError());
      }
      else
      {
        szMsg.Format(_T("可以打开文件%s\r\n试试看,测试期间请不要按确定键"),
          szFileName);
      }
      
      AfxMessageBox(szMsg);  if(h_File != HFILE_ERROR)
      {
        CloseHandle((void*)h_File);
      }
      

  8.   


    估计还是Win7系统下权限问题,我用于测试的是一些Windows目录下的系统文件,比如记事本这类的。
      

  9.   

    openfile是什么。。果断用CreateFile
      

  10.   

    已经试过了,CreateFile的效果一样,XP下没有任何问题,到了Win7系统,如果是系统目录下的文件,就不行了,两个API函数都不返回错误
      

  11.   

    应该是系统的问题,不是第三方程序的问题
    你在Win7下是管理员,在XP下也是管理员吗?
    或许不同系统的管理员权限也会有所不同
      

  12.   

    独占应该用OF_SHARE_EXCLUSIVE,这个是拒绝读写的,如果欲打开的文件被人正在使用,会出错
      

  13.   

    是一个权限下(管理员)运行的程序,Win7系统目录下的文件采用独占模式打开就是不行。参数没有问题,XP系统下都是可以的。没有任何错误返回。函数正常执行。
    高手高手,期待高手。
      

  14.   

    都清楚了是权限问题,你把那个文件的dacl改成允许你的用户读写再试