QFile 无法删除 C 盘上的文件

  • 本文关键字:文件 删除 QFile qt
  • 更新时间 :
  • 英文 :


我有一个显示文件的列表窗。我可以在桌面和其他位置上删除选定的文件,但是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并在尝试编译之前作为管理员运行。