我有一个显示文件的列表窗。我可以在桌面和其他位置上删除选定的文件,但是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驱动器上删除文件有权在任何位置删除任何文件?
要使此工作,我需要管理员特权。这是解决方案。
1(创建RC文件:打开记事本并粘贴以下文本,然后将文件保存为yourappname.rc,这将创建RC文件。将文件放入具有所有SourceCode和Pro文件的文件夹中。
#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并在尝试编译之前作为管理员运行。