Windows フォルダー内のアイテム (フォルダーとファイル) の数を取得する必要があります。隠しアイテムを入れるか入れないかは条件次第で簡単にできます。しかし、私のプログラムでは、ユーザーに表示されるアイテムの数を取得したい! つまり、非表示のアイテムがフォルダ内で視覚的に見える場合は、カウントに含める必要があります。非表示のアイテムが表示されない場合は、含めるべきではありません。
Windowsマシンで「隠しファイルを表示する」プロパティが設定されているかどうかを知るにはどうすればよいですか。つまり、ファイルまたはディレクトリがユーザーから (視覚的に) 「本当に隠されている」かどうかを確認する方法はありますか??
更新:この質問をもう一度開きます。ここでの元の回答は私の質問に答えましたが、ある程度は絶対確実ではありません。
新しいシナリオは次のとおりです。
Cドライブの特定のファイル(まだ他の場所ではありません)は、視覚的に隠されていますが、それらの非表示属性はfalse(またはチェックされていません)、奇妙です. これらのファイルは、(フォルダ オプションから) 表示されると、他の隠しファイルのように淡く見え、フォルダ オプションで「隠しファイルを表示しない」を設定すると (他の通常の隠しファイルと同様に)視覚的に隠されます。
私のマシンにあるこれらのファイルは、autoexec.bat
とconfig.sys
にありC:\
ます。これは、Windows XP マシンと Windows 7 マシンで見つかりました。そのようなファイルを識別する方法はありますか? 基本的に、ディレクトリ内の表示可能な (視覚的に) ファイルの数を取得しようとしていましたが、アプリケーションでファイルの数を取得しようとすると失敗しますC:\
。何が起こるかというと、アプリケーションはこれら 2 つのファイルをカウントしますが (その属性は非表示になっていないため)、視覚的な観点からは、次のように通常は非表示になっています。
string[] f = Directory.GetFiles(path);
int count = 0;
foreach (string s in f)
{
FileInfo i = new FileInfo(s);
if ((i.Attributes & FileAttributes.Hidden) == 0)
count++;
}
return count;
したがって、唯一の正しい方法は、Shell API を呼び出すことだと思います。私は良いスターターを探しています..
ありがとう..