我有一个简单的问题,我找不到简单的解决方案。我正在尝试永久删除文件。我不是在寻找使数据不可恢复的最佳方法,我只是不希望它位于回收站中。我有两个问题。
是一种获取回收站路径的方法吗?这个想法是,一旦我有了路径,我就可以使用
remove()
它从那里永久删除它。以下对我来说失败了,返回了一个完全不同的路径,它不是回收站的路径。也许我错过了一个论点。char RecycleBin[_MAX_PATH]; SHGetSpecialFolderPath(NULL, RecycleBin, CSIDL_BITBUCKET, FALSE);
是否有用于永久删除文件的 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 );
以上两种方式都编译运行良好,但实际上并没有摆脱文件。有任何想法吗?