2

TreeViewコントロールをLAN上のASUS-PCマシンのパブリックフォルダーにバインドしようとしています。

ASUS-PCフォーム画像

ただし、パスからDirectoryInfoオブジェクトを作成できないため、「ASUS-PC」ディレクトリを解析する方法がわかりません"\\\\ASUS-PC"

DirectoryInfo dir = new DirectoryInfo("\\\\ASUS-PC");

上記の行は、メッセージとともにArgumentExceptionをスローしますThe UNC path should be of the form \\server\share.

以下のコードはルートのダムノードを作成するだけなので、そのPCのすべてのパブリックフォルダーを表示することはできません。

パス「\\ASUS-PC」のディレクトリリストを取得するにはどうすればよいですか?

public void BindDirectoryToTreeView(string directoryPathToBind) {
  if (!String.IsNullOrEmpty(directoryPathToBind) && Directory.Exists(directoryPathToBind)) {
    treeView1.Nodes.Clear();
    TreeNode rootNode = null;
    char[] ps = treeView1.PathSeparator.ToCharArray();
    string[] split = directoryPathToBind.Split(ps);
    var folders = split.Where(str => !String.IsNullOrEmpty(str));
    for (int i = 0; i < folders.Count(); i++) {
      var folder = folders.ElementAt(i);
      int index = directoryPathToBind.IndexOf(folder);
      int length = index + folder.Length;
      string path = directoryPathToBind.Substring(0, length);
      if (rootNode != null) {
        DirectoryInfo dir = new DirectoryInfo(path);
        TreeNode node = new TreeNode(dir.Name, 0, 0);
        RecurseFolders(dir, node);
      } else {
        //DirectoryInfo dir = new DirectoryInfo(path); <= Throws the Error
        rootNode = new TreeNode(folder, 0, 0);
        //RecurseFolders(dir, rootNode);
      }
    }
    treeView1.Nodes.Add(rootNode);
    if (0 < rootNode.Nodes.Count) {
      rootNode.Expand();
    }
  }
}

私はこれができることを知っています。だから、私はこれを行うために何が必要ですか?

Windowsはそれをします

4

2 に答える 2

5

\\ASUS-PCはディレクトリではないので、DirectoryInfo不平を言っています。株式を列挙する方法を見つける必要があります

于 2012-06-23T20:38:17.393 に答える
4

探しているのは、特定のホスト上のネットワーク共有を列挙する方法です。DirectoryInfoでこれを行うことはできません。

于 2012-06-23T20:39:25.660 に答える