-1

簡単な解決策が見つからないという簡単な問題があります。ファイルを完全に削除しようとしています。データを回復不能にするための最も優れた方法を探しているわけではありません。データをごみ箱に入れたくないだけです。2つの質問があります。

  1. ごみ箱へのパスを取得する方法はありますか?アイデアは、パスをremove()取得したら、そこから完全に削除するために使用できるということです。以下は私にとって失敗し、ごみ箱のパスではない完全に異なるパスを返します。多分私は議論を逃している。

    char RecycleBin[_MAX_PATH];   
    SHGetSpecialFolderPath(NULL, RecycleBin, CSIDL_BITBUCKET, FALSE);
    
  2. ファイルを完全に削除するwin32api呼び出しはありますか?

読んでくれてありがとう。

編集1:

以下の答えによると、私はこの_unlink ()関数を使用していますが、その動作は私が望んでいることを正確には実行しません。デスクトップを取得するために何かが必要です。次に、その文字列にファイルを追加し、引数としてファイルを削除する関数に文字列を渡します。これが私がunlinkで試している方法です。このようにunlinkを実行すると、機能します。

     char path [] = "C:\\Users\\testuser\\Desktop\\test.dat";

     _unlink( path );

ただし、次の2つの方法で試してみると、失敗します。

    char DesktopPath[_MAX_PATH];

    SHGetSpecialFolderPath(NULL, DesktopPath, CSIDL_DESKTOPDIRECTORY, FALSE);

    strcat ( DesktopPath, "\\test.dat" );

    _unlink ( DesktopPath );

この方法(引用符の追加)も失敗します。

    char DesktopPath[_MAX_PATH];

    char final_path [] = "\"";

    char quotes [] = "\"";

    SHGetSpecialFolderPath(NULL, DesktopPath, CSIDL_DESKTOPDIRECTORY, FALSE);

    strcat ( DesktopPath, "\\test.dat" );

    strcat ( DesktopPath, quotes );

    strcat ( final_path, DesktopPath );

    _unlink ( final_path );

上記の両方の方法は正常にコンパイルおよび実行されますが、実際にはファイルが削除されません。何か案は?

4

1 に答える 1

0

POSIX関数unlink(MSVC2005 +の場合は_unlink)を使用します。

_unlink("file.ext"); //delete file without sending to Recycle Bin
于 2012-09-24T23:19:27.200 に答える