gpt4 book ai didi

c++ - 重命名(): Access Denied despite full control

转载 作者:行者123 更新时间:2023-11-28 02:17:27 27 4
gpt4 key购买 nike

这个问题乍一看很可笑。我正在用 C++ 编写一个简单的应用程序。我编译了代码。一切正常,直到我将 exe 移动到与系统不同的分区。我有两个分区(C:带系统,E:带数据,它们都是 NTFS),来自 C:,例如。从桌面,从 C:\等的根目录,程序没有任何问题。从 E:\,rename() 函数抛出错误“拒绝访问”。

澄清:
- 我有完整的管理员权限
- 该程序以管理权限运行
- 传输的文件不被任何进程使用
- 安全策略中的系统分区 E:\已授予 Administrators 组和我个人的全部权限。

如何解决?
例如:可以在同一位置保存文件的游戏即使没有管理员权限也没有问题。

当我尝试使用 MoveFileEx 时,出现代码 5 错误。代码 5 表示“访问被拒绝”。也因为是别的分区

最佳答案

根据评论,您的原始名称和新名称不在同一分区/驱动器/安装点上。 rename 仅更改名称,它实际上并不是一个“移动”命令(当源和目标位于同一文件系统时,它恰好可用)。

如果您需要跨分区移动,在 Windows 上,您可以使用 MoveFile function如果可能,它将重命名,或者当目标位于不同的分区时“复制并删除原始文件”。

如果您需要踩踏现有文件(MoveFile 拒绝覆盖现有文件),请使用 MoveFileEx带有标志 MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING(可选地 - 在 MOVEFILE_WRITE_THROUGH 中进行操作,因此当原子 rename 不是时,操作将阻塞直到文件完成移动可能)。

关于c++ - 重命名(): Access Denied despite full control,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33635963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com