gpt4 book ai didi

windows - QFile::copy 返回真,即使在 Windows 中复制失败

转载 作者:可可西里 更新时间:2023-11-01 09:47:27 29 4
gpt4 key购买 nike

我有一个名为“src”的 QString 变量,它包含一个文件名。操作 QFile::copy(src, target) 工作正常,直到目标是“C:”或“C:/”(我在 Windows 10 中遇到问题)。在这种情况下,操作返回 true,即使我没有看到任何实际复制到 C:/的文件(事实上,通常我不能在没有管理员权限的情况下将任何内容复制到 C:/)。此外,当我调试时,我看到它说它已复制到 C://(两个斜杠)。是 Qt 错误还是我错过了什么?

UPD:复制,例如,到 C:/Users 也需要管理员权限失败,因为它应该(返回 false)。 Qt 版本为 5.7。

更新:

QString src = "C:/Stuff/somefile.pdf";
QString target = "C:/somefile.pdf";
if (QFile::copy(src, target)) qDebug() << "Copy successful";
else qDebug() << "Copy failed";

此代码产生“复制成功”,而我既没有对 C:/的写入权限,也没有实际文件 somefile.pdf 出现在那里。

最佳答案

当您的应用程序没有写入某些目录的权限时,文件将存储到位于 C:\Users\%USERNAME%\AppData\Local\的 Windows Virtual Store虚拟商店。所以实际上您的文件已成功保存(尽管路径被重定向),这就是 QFile::copy() 返回 true 的原因。

此重定向称为 UAC 虚拟化,适用于 C:C:\Program FilesC:\WindowsHKLM\Software

我想最真正避免此类问题的方法是坚持将配置数据保存在指定位置,例如应用程序数据(在 Qt 框架的上下文中也符合跨平台代码的条款)。

关于windows - QFile::copy 返回真,即使在 Windows 中复制失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030550/

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