c++ - 移动文件夹 Windows C++ : Works Vista and up, 不是 XP

标签 c++ windows winapi

几个小时以来,我一直在努力解决这个问题,它在 Windows Vista 和 Windows 7 上完美运行,但是当我在 Windows XP 上运行它时,它失败了,没有任何消息。不幸的是,我没有 XP 下的开发环境,所以我不能通过调试器运行它来检查,我是否错过了一些非常明显的东西?同一段代码实际上使用 CopyFile 和一些命令将数据写出到 C:\,所以如果它是权限错误,那就很奇怪了。

编辑:返回值为 1223,ERROR_CANCELLED 表示已被用户取消。

编辑 2:我禁用了 s.fFlags,它立即弹出一个对话框询问它是否应该创建 dir-test 文件夹,所以我切换到 FOF_NOCONFIRMATION它似乎忽略了旗帜。我也在删除过程中使用相同的 SHFileOperation 方法使用它,因此它不适用于文件拷贝。

LPTSTR source = L"dir-test\\*\0";               
LPTSTR dest = L"C:\\dir-test\0";


SHFILEOPSTRUCT s = { 0 };
s.hwnd = 0;
s.wFunc = FO_COPY;
s.fFlags = FOF_SILENT;
s.pTo = dest;
s.pFrom = source;
int n;
n = SHFileOperation(&s);`

最佳答案

因此,由于某些奇怪的原因,使用 SHFileOperation 将强制出现 Windows XP(但不是 Vista 或 7)的确认对话框,并忽略标志以告诉它只是确认。在运行拷贝之前使用 CreateDirectory() 的简单修复,不需要确认对话框。

关于c++ - 移动文件夹 Windows C++ : Works Vista and up, 不是 XP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251170/

相关文章:

C++模板结果类型

c++ - 缺少 "const"导致 "error: no matching function for call to"

php - 如何使 php 与 postgresql 一起工作?

java - 运行 java jar 文件及其使用的文件路径。 (Windows 7 和 Windows 2008 服务器)

c++ - Windows 更新代理纯 win32 API

c++ - 在通用 Windows 应用程序 C++ 上使用 win32 DLL 库

c - 使用winapi为当前进程设置硬件断点

c++ - 提升精神语义 Action 参数

c++ - 将可被数字整除的数字插入 vector 中

.net - 信任自签名证书以验证服务器(Windows 上的 .NET 客户端)