rename():尽管完全控制,但访问被拒绝
rename(): Access Denied despite full control
这个问题乍一看很可笑。我正在用C++编写一个简单的应用程序。我编译了代码。一切都很顺利,直到我把exe移到了与系统不同的分区。我有两个分区(C:带系统和E:带数据,它们都是NTFS),来自C:,例如来自Desktop,来自C:\的根目录,程序没有任何问题。从E:\,rename()函数抛出一个错误"Access Denied"。
澄清:
-我拥有完整的管理权限
-该程序以管理权限运行
-任何进程都不会使用传输的文件
-安全策略中作为E:\的系统分区已授予管理员组和我个人的完全权限。
如何解决
例如:即使没有管理员权限,可以将文件保存在同一个地方的游戏也没有问题。
当我尝试使用MoveFileEx时,出现了代码5的错误。代码5表示"拒绝访问"。也因为它是另一个分区
根据注释,您的原始名称和新名称不在同一个分区/驱动器/装载点上。rename
只更改名称,它实际上不是一个"移动"命令(只是当源和dest位于同一文件系统上时,它恰好可用)。
如果您需要跨分区移动,在Windows上,您可以使用MoveFile
功能,如果可能的话,它将是rename
,或者当目标位于不同的分区时,它将"复制并删除原始文件"。
如果您需要踩踏现有文件(MoveFile
拒绝覆盖现有文件),请使用带有标志MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING
的MoveFileEx
(在MOVEFILE_WRITE_THROUGH
中可以选择or
,这样当原子rename
不可能时,操作将一直阻止,直到文件完成移动)。
相关文章:
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- 访问控制和静态成员
- 访问lambda内部循环控制变量
- 访问控制对于已删除的构造函数是否重要?
- 是否可以访问C++标头/库并在 python 控制台中运行C++脚本?
- MFC编辑控制消息处理访问文档对象
- 模板参数中的访问控制
- 为什么标准布局类的成员必须具有相同的访问控制
- 使用线程控制访问外部API的对象
- Arduino以太网访问控制问题
- 基于角色的访问控制C 库或示例
- 系统会冻结如果我使用运行的守护程序重新启动或关闭,该守护程序可以使用Fanotify控制对文件的访问
- c++11标准布局-使用相同的访问控制
- 为什么拥有不同访问控制权限的成员的工会不是标准布局
- Qt中的访问控制
- C++控制内存访问和指针取消引用
- 控制对多线程程序中字符串对象的访问的最佳方法
- 如何控制C++中类或函数的可访问性
- 我需要使用 ext4 文件以编程方式获取和设置 Ubuntu 14.04 台式计算机的 ACL(访问控制列表)
- 如何在c++中控制对对象的访问