CreateFile Access is denied

zzultc 2008-03-29 09:30:35
我的硬盘文件系统是FAT32
createfile(filename,FILE_SHARE_READ,,,,)是,出错,getlasterror()是5,对应Access is denied.
我程序是以管理员资格运行的啊!
当然,我的程序以FILE_SHARE_READ权限读文件的,另外一个程序也再读那个文件,不知道另外的程序那个权限,有什么办法吗?
难道FILE_SHARE_READ也不行吗?
我的疑问是:FILE_SHARE_READ应该是最小的访问权限了,但是问什么不能使用呢?而那个正在访问的进程,说的清楚些,是Windows Media Player,播放过程中,应该不会禁止别的进程读罢?平时我们完全可以一边看电影,一边复制啊!
何况,我的程序运行时,我还是把播放器暂停了呢!
是不是,可以在播放前对媒体文件的访问权限改变??
...全文
603 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hefengscu 2012-01-10
  • 打赏
  • 举报
回复
我也遇到过类似的问题,我的解决方法是将文件的只读属性修改了。将文件改成非只读状态。不知道能不能帮到你。
zzultc 2008-03-31
  • 打赏
  • 举报
回复
播放器在工作的时候,
我的代码:
HANDLE hFile;
hFile = CreateFile(filename, // open MYFILE.TXT
FILE_READ_DATA, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // no security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
if (hFile == INVALID_HANDLE_VALUE) {
DWORD err=GetLastError(); //here err==5 ,ERROR_ACCESS_DENIED,Access is denied
return;
}
经观察发现,播放器播放完毕,媒体文件会自动删除!我估计是设置了FILE_FLAG_DELETE_ON_CLOSE。
我在播放过程中,突然断电后,然后重启,发现同样的代码,没有错误,说明是可行的!
所以我估计是权限的的问题,该怎么调整权限呢??
aj3423 2008-03-30
  • 打赏
  • 举报
回复
HANDLE hFile;
hFile = CreateFile(fn, // open MYFILE.TXT
GENERIC_READ, // open for reading
FILE_SHARE_READ, // share for reading
NULL, // no security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
if (hFile == INVALID_HANDLE_VALUE) {
return;
}
jingzhongrong 2008-03-30
  • 打赏
  • 举报
回复
FILE_READ_ATTRIBUTES
chenyu2202863 2008-03-29
  • 打赏
  • 举报
回复
第二个参数改为FILE_ALL_ACCESS 试下
cnzdgs 2008-03-29
  • 打赏
  • 举报
回复
FILE_SHARE_READ做第2参数当然不对,如果是手误,把完整的CreateFile这行代码贴出来看看。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧