我有一个显示文件的listWidget。我可以删除桌面和其他位置上的选定文件,但C驱动器上的文件不会删除。如何删除C盘上的文件?我只是想删除单个文件,而不是目录。我正在使用Windows。这是我的代码段。
void MainWindow::on_removeSelectedFile_clicked() {
QString fileToRemove = ui->listWidget->currentItem()->text();
QFile::setPermissions(ui->listWidget->currentItem()->text(),
QFile::ReadOwner|QFile::WriteOwner|QFile::ExeOwner);
QFile::remove(fileToRemove);
ui->listWidget->takeItem(ui->listWidget->currentRow());
}
我尝试过设置所有不同的权限。 我也尝试过使用下面的代码,但不确定我是否用它做了正确的事情:
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
qt_ntfs_permission_lookup++;
如何删除C驱动器上有权删除任何位置的任何文件的文件?
答案 0 :(得分:1)
为了实现这一点,我在程序启动时需要管理员权限。这是解决方案。
1)创建rc文件:打开记事本并将以下文本粘贴到内部,然后将文件保存为yourappname.rc这将创建rc文件。将文件放在包含所有源代码和专业文件的文件夹中。
#include <windows.h>
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "yourappname.exe.manifest"
2)使用记事本创建清单文件,粘贴以下文本,并将其保存为yourappname.exe.manifest并将其放在与上面相同的位置。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="2.0.0.0" processorArchitecture="X86"
name="yourappname.yourappname" type="win32" />
<description>A discription of your app</description>
<dependency />
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
3)在你的专业档案中输入以下文字:
win32 {
RC_FILE = yourappname.rc
}
那就是它。现在您的应用程序应该以管理员权限开始。
也有类似的帖子描述了这个过程。只需确保文件夹名称中没有空格,否则它将无法正常工作。此外,您必须运行具有管理员权限的qt才能工作。在尝试编译之前,右键单击Qt并以管理员身份运行。