ディレクトリのリストを TreeView システムに追加しようとしていますが、ユーザー アクセスの問題と思われる問題が発生しています。この問題を解決するためにさまざまな手順を試しましたが、どれもうまくいきませんでした。これらには、ソリューション マニフェスト ファイルのセキュリティの変更、アクセスできないファイルをスキップするための try catch の使用、Windows ユーザー フォルダー設定の変更による完全な制御 (管理者) が含まれます。同様の問題に対する回答を求めてネット全体を見回しましたが、ほとんどの人は try catch システムを使用しただけです。すべてがフリーズしてそこに座っているだけなので、これは私のシステムでは機能しません。その後、プログラムは、コンピューター全体で単一のディレクトリが見つからなかったかのように動作します。私のコードは次のもので構成されています:
public Folder_Browser()
{
InitializeComponent();
MapDirectory();
}
private void MapDirectory()
{
TreeNode rootNode;
DirectoryInfo dirPrograms = new DirectoryInfo(@"/");
DriveInfo[] loadedDrives = DriveInfo.GetDrives();
foreach (DriveInfo dr in loadedDrives)
{
if (dr.DriveType != DriveType.Removable)
{
DirectoryInfo info = new DirectoryInfo(dr.Name);
if (info.Exists)
{
rootNode = new TreeNode(info.Name);
rootNode.Tag = info;
GetDirectories(info.GetDirectories(), rootNode);
treeView1.Nodes.Add(rootNode);
}
}
}
}
private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo)
{
TreeNode aNode;
DirectoryInfo[] subSubDirs;
foreach (DirectoryInfo subDir in subDirs)
{
aNode = new TreeNode(subDir.Name, 0, 0);
aNode.Tag = subDir;
aNode.ImageKey = "folder";
try
{
subSubDirs = subDir.GetDirectories();
//ERROR HERE^^^^^^^
if (subSubDirs != null && subSubDirs.Length != 0)
{
GetDirectories(subSubDirs, aNode);
}
nodeToAddTo.Nodes.Add(aNode);
}
catch (System.UnauthorizedAccessException)
{
}
}
}
この種の問題に対して他の誰かのソリューションを実装しようとするたびに、ディレクトリのリストが出てきません。プログラムは、アクセスできないフォルダーを無視するだけで、あまりにも多くのリソースを占有します。私が見落とした単純なものはありますか?それとも、このアプローチは不可能ですか?どんな助けでも大歓迎です、乾杯。