2016-09-02 11 views
10

"C:\ Windows \ System32 \ Tasks"を列挙すると、GetFile()が空である理由を誰にも明らかにすることができますか?System.IO.Directory.GetFiles空白

System.IO.Directory.GetFiles(@"C:\Windows\System32\Tasks"); 

私は、このチェックした:

  • VSが管理者として実行されている

    も例外がスローされていない
  • ルート内のファイルがあります

  • エクスプローラ経由でファイルをコピーして別のフォルダにコピーできます。

+0

私はWindows 10を使用しています –

+0

試してみると動作します...エクスプローラからEXEを管理者として実行してみてください。 –

+0

これは役に立ちますか? - http://stackoverflow.com/questions/9485449/directoryinfo-getfiles-method-not-returning-any-files – Developer

答えて

9

ここでの問題は、プログラムがx86として実行されており、その中にファイルがないbeing silently redirected to another folderだということです。 (C:\Windows\SysWOW64\Tasksにリダイレクトされます)

x64またはAnyCPUとしてコンパイルすると、ファイルが表示されます。

+1

リダイレクトの背景説明。 [ここ](http://serverfault.com/a/315906/54658)と[ここ](http://icelava.net/forums/thread/5391.aspx)。 –

+0

ありがとう、マシュー。これは私を怒らせていた。どうして私が "System32"の部分を見逃したのか分かりません。 –

+0

@ShaunVermaakそれはちょっとした直感的ではないですか?あなたはx86として稼働していますが、 'System32'というフォルダから' SysWOW64'という名前のフォルダにリダイレクトされています... wut? –

1

ただの前提です。 try catchブロックを使用していますか? このフォルダには、拒否されたアクセス権を与える権限と、try try catchブロックでエラーが表示されない権限設定があります。