2017-04-23 10 views
-1

ファイルを表示するlistWidgetがあります。デスクトップやその他の場所で選択したファイルを削除できますが、Cドライブ上のファイルは削除されません。どのように私はCドライブ上のファイルを削除できますか?私はディレクトリではなく、単一のファイルを削除しようとしています。私はWindowsを使用しています。ここに私のコードスニペットがあります。QFileはCドライブのファイルを削除できません

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

管理者としてプログラムを実行していますか? – Mike

+0

どこを右クリックしていますか? Qt Creatorを使用していますか? – Mike

+0

「QFile :: errorString()」とは何ですか? –

答えて

1

この機能を利用するには、プログラムの起動時に管理者権限が必要でした。ここに解決策があります。

1)rcファイルを作成します:メモ帳を開き、次のテキストを内部に貼り付け、ファイルをyourappname.rcとして保存します。これでrcファイルが作成されます。すべてのソースコードとプロファイルがあるフォルダにファイルを置きます。

#include <windows.h> 
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "yourappname.exe.manifest" 

2)次のテキストを貼り付け、メモ帳でマニフェストファイルを作成し、yourappname.exe.manifestとして保存し、上記と同じ場所にそれを置きます。

win32 { 
    RC_FILE = yourappname.rc 
} 

それだ:あなたのプロファイルで

<?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)は、次のテキストを置きます。これで、アプリケーションは管理者権限で起動する必要があります。

このプロセスについても同様の記事が記載されています。あなたのフォルダ名にスペースがないことを確認してください。そうしないと動作しません。また、それが動作するためには、管理者権限でqtを実行する必要があります。コンパイルを試みる前に、Qtを右クリックして管理者として実行してください。

関連する問題