亲自尝试一下:
创建一个XLS文件,在Excel中打开它.
打开sysinternals Process Monitor,观察在资源管理器中复制XLS文件时发生的情况(只需点击ctrl-c ctrl-v).
连续两次调用:: CreateProcess.第一次调用请求读取权限,并拒绝访问.第二次调用要求读取加写入加删除和传递.
这是正常的吗?
如果您使用FILE_SHARE_READ打开
文件,则表示您愿意共享对此
文件的访问权限,但仅限于读取.
如果您打开所有标志,您也愿意共享写入/删除访问权限.
FILE_SHARE_READ比FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE更具限制性
如果某个其他进程(excel)已打开此文件,例如write(并且它设置了共享标志),你可以访问它的唯一方法是接受共享它以进行写入.