これは私を狂っています。私はドライブ上のすべてのファイルのサイズを見て、ディレクトリツリーを歩く簡単なプログラムを書いています。かなり甘いもの。FindFirstFileディレクトリをスキップする
しかし、私は期待した答えが得られていないことに気付きました。私のコードはで、いくつかのディレクトリをスキップしています。開始するには、ここに私のコードの(簡体字)版だ:私は取得しています
#include <stdio.h>
#include <Windows.h>
int main()
{
WIN32_FIND_DATA fd;
HANDLE h = FindFirstFile(L"c:\\Windows\\System32\\wbem\\*.*", &fd);
if (h != INVALID_HANDLE_VALUE)
{
BOOL b;
do {
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
printf("d: %S\n", fd.cFileName);
//else
// printf("f: %S\n", fd.cFileName);
b = FindNextFile(h, &fd);
} while (b != FALSE);
FindClose(h);
}
}
出力は、あなたが期待するものはかなりある。しかし
d: .
d: ..
d: AutoRecover
d: en-US
d: Logs
d: Repository
d: tmf
d: xml
、C言語でコマンドプロンプトから:\ WINDOWS \ SYSTEM32 \ WBEM、dir /ad
は私を与える:
06/15/2016 07:20 PM <DIR> .
06/15/2016 07:20 PM <DIR> ..
04/14/2016 05:40 PM <DIR> AutoRecover
03/24/2011 03:52 PM <DIR> en-US
07/13/2009 06:34 PM <DIR> Logs
07/13/2009 09:08 PM <DIR> MOF
02/20/2017 10:32 PM <DIR> Performance
02/23/2017 03:59 AM <DIR> Repository
07/13/2009 06:36 PM <DIR> tmf
07/13/2009 07:20 PM <DIR> xml
0 File(s) 0 bytes
10 Dir(s) 171,203,104,768 bytes free
精密検査はPerformance
とMOF
ディレクトリが私の出力にリストされていないことが明らかになりました。ハァッ?
これらのディレクトリについては明らかに違いがあります。しかし何?
dir
の出力を見ると、それらは接合部ではないことがわかります。- attribを使用すると、特別なフラグは設定されません(システムや隠しなど)。
- fsutilはハードリンクを表示していません。
- ディレクトリのアクセス権を見ると、管理者(私は)が完全に制御できます。
私は困惑しています。私は今までを実行して、私のディレクトリテーブルが台無しになっているかどうか確認しています。 Cleaning up 472 unused index entries from index $SII of file 0x9. Cleaning up 472 unused index entries from index $SDH of file 0x9.
以外は何も見つかりませんでした。
さまざまなオプションでFindFileExを使用しようとしましたが、これらのディレクトリを表示できません。
私は他に何を試みるか考えることはできません。これらのディレクトリはdir
に表示されますが、FindFile
では表示されません。そして、(もっと重要なことに)FindFileにそれらを表示させるにはどうすればいいですか?
FWIW:
- のWindows 7のx64
- ドライブCは、あなたのコードは、64ビット
System32
フォルダにアクセスしようとしているNTFS - MSVC 2010で構築
いやはや:
は、より多くのこのような何かを試してみてください!うん、確かに、私は32ビットを構築していた。報告されたディレクトリはsyswow64からのものでした。そこにあるwbemディレクトリには、これらの2つのディレクトリが含まれていません。 –