3

ローカル ドライブのごみ箱のディレクトリを返す簡単なコードを書き込もうとしています。それは簡単なように思えます-Googleで千の答えになるはずです。まだ見つかっていません:(

FAT ドライブと NTFS ドライブの基本名 (RECYCLED と RECYCLER) が異なることがわかりました。「その」ごみ箱は、マシン上のすべてのドライブのごみ箱を組み合わせた仮想フォルダであることがわかりました。

私が見つけられなかったのは、C: ドライブのごみ箱ディレクトリを見つける方法です。ベトナム語 (またはその他の英語以外) のマシンでも同様です。(「RECYCLER」が国際化されているかどうかを示す投稿は見つかりませんでした)

誰かが私に決定的な答えを教えてもらえますか?

ありがとう

更新:CSIDL_BITBUCKETそれを使用する機能に注意してください。私が読んだすべてのものから、それはすべてのドライブでそのユーザーによって削除されたすべてのファイルの結合である仮想ディレクトリを指しています。物理的なごみ箱のディレクトリを探します (私の Vista では、私が知る限り C:\$Recycle.Bin のようです)

4

4 に答える 4

2

Raymond Chen が答えています -ディレクトリが実際にごみ箱であることを確認するにはどうすればよいですか?

于 2009-06-02T10:07:52.543 に答える
1

少し遅れますが、おそらく決して遅くなるよりはましです...

shell32.dllをデバッグした後、Windowsのバージョンごとにリサイクルパスがハードコーディングされており、そのドライブのファイルシステムにも依存していることがわかりました。私はこれをWindowsXP、Vista、Windows7でテストしました。

X:をごみ箱へのパスを取得するドライブとし、SIDを現在のユーザーのSIDとします。


    switchif(OsType) {
        case WindowsXP:
        {
            if(PartitionType("X:") == NTFS)
            {
                printf("Path is: X:\\Recycler\\SID\\");
            }
            else
            {
                printf("Path is X:\\RECYCLED\\");
            }
        }

        case WindowsVista:
        case Windows7:
        {
            if(PartitionType("X:") == NTFS)
            {
                printf("Path is: X:\\$Recycle.bin\\SID\\");
            }
            else
            {
                printf("Path is X:\\$RECYCLE.BIN\\");
            }
        }
    }

ウィキの記事は同じ事実を示しています:http: //en.wikipedia.org/wiki/Recycle_Bin_%28Windows%29

于 2009-09-09T21:59:57.873 に答える
0

Win32 では、SHGetSpecialFolderLocationを使用します。CSIDL_BITBUCKETをCDILパラメータとして渡します。

于 2009-06-01T19:51:30.740 に答える