即使在我为我的应用程序授予管理员后也无法从 Windows 系统复制目录
Can't copy Directory from Windows system even after I give admin to my app
我创建了一个应用程序,当我使用 Windows 系统时,它将 C 驱动器 Windows 系统上的目录副本复制到另一个文件夹,我在这里使用这种方式给我的应用程序管理员。
我使用此代码复制文件夹及其所有内容。 此函数。
void MainWindow::copyPath(QString src, QString dst)
{
QDir dir(src);
if (! dir.exists())
return;
foreach (QString d, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
QString dst_path = dst + QDir::separator() + d;
dir.mkpath(dst_path);
copyPath(src+ QDir::separator() + d, dst_path);
}
foreach (QString f, dir.entryList(QDir::Files)) {
QFile::copy(src + QDir::separator() + f, dst + QDir::separator() + f);
}
}
并在按钮中
copyPath("C:/Windows/System32/spp/store", "D:/copyfolder");
当我在 D 驱动器上的另一个文件夹上进行测试时,它可以工作,所以我可以做些什么来让我的 qt 应用程序从 C 驱动器复制该文件夹。
当我给它这个路径时C:/Windows/System32/spp/
它只复制一个C:/Windows/System32/spp/tokens
的文件夹,而其他文件夹没有复制,当我给它路径C:/Windows/System32/spp/store
时,它无法路径这个条件
QDir dir(src);
if (! dir.exists())
return;
它无法识别目录。 所以如果我可以用 C# 或任何其他方式做到这一点,请不要提供任何信息,因为我尝试使用 C# 但它也不起作用。
好吧,@markus发现了兔子,所以让我们把它变成一个答案。
64位Windows有一个名为文件系统重定向器的东西,它欺骗32位应用程序认为他们正在查看(例如)C:WINDOWSSYSTEM32
而实际上他们不是。 该链接背后的详细信息。
但是,您可以将其关闭。 就原始 Win32 调用而言,您可以执行以下操作:
VOID *oldValue;
BOOL ok = Wow64DisableWow64FsRedirection (&oldValue);
// ...
ok = Wow64RevertWow64FsRedirection (oldValue);
很难想象为什么这些调用会失败。
还有:
BOOLEAN Wow64EnableWow64FsRedirection (BOOLEAN Wow64FsEnableRedirection);
这使您可以打开它(仅适用于受虐狂)或无条件关闭。
似乎没有调用来确定当前是否启用了重定向。 我想你可以做的是假设它在程序启动时启用(这将是),然后跟踪你自己所做的任何更改。
相关文章:
- 通知 Windows 系统应用程序字体已被卸载/删除
- 即使在我为我的应用程序授予管理员后也无法从 Windows 系统复制目录
- 如何监视应用程序进行的Windows系统API调用?
- 获取 Windows 系统已加入 Azure AD 时登录用户的 UserPrincipalName
- 用C++设置windows系统时间
- 如何获取当前的 Windows 系统范围的计时器分辨率
- 如何从Windows系统中完全删除文件
- 如何在Windows系统中使用Sublime Text在外部控制台中运行程序
- 订阅windows系统事件本机c++
- QMovie动画gif功能在Windows系统上不起作用
- 如何在 Windows 系统托盘提示符中显示与号
- 如何在Qt中更改windows系统时间
- 在Windows系统上使用QMediaPlayer,并在Linux上编译代码
- Windows系统调用
- 是否所有的c++代码(完全相同)将编译和工作相同的Windows系统以及基于Linux的系统?,为什么?[c++] [R
- Qt 5.5 MSVC 2013.获取Windows系统托盘几何图形时遇到麻烦
- 如何找到Windows系统配置文件的名称
- 如何在windows系统中控制声音
- 每N秒做一些与Windows系统时钟同步的事情
- 如何在Windows系统中以管理员身份透明地执行任务