-1

我有一个简单的问题,我找不到简单的解决方案。我正在尝试永久删除文件。我不是在寻找使数据不可恢复的最佳方法,我只是不希望它位于回收站中。我有两个问题。

  1. 是一种获取回收站路径的方法吗?这个想法是,一旦我有了路径,我就可以使用remove()它从那里永久删除它。以下对我来说失败了,返回了一个完全不同的路径,它不是回收站的路径。也许我错过了一个论点。

    char RecycleBin[_MAX_PATH];   
    SHGetSpecialFolderPath(NULL, RecycleBin, CSIDL_BITBUCKET, FALSE);
    
  2. 是否有用于永久删除文件的 win32api 调用?

谢谢阅读。

编辑1:

根据下面的答案,我一直在使用该_unlink ()功能,但它的行为并不完全符合我的要求。我需要一些东西来获取桌面,然后将一个文件添加到该字符串并将该字符串传递给一个函数,该函数将删除该文件作为参数。这是我尝试取消链接的方法。如果我这样做取消链接 - 它可以工作:

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

     _unlink( path );

但是,如果我以以下两种方式尝试它会失败。

    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 (_unlink for MSVC2005+)

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