Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > какие компьютеры есть в сети ?


Автор: Enter 13.2.2007, 02:38
Мне необходимо сделать прогу: создать список всего, что есть в сети.
Почти половина уже сделана,  рекурсия по подпапкам есть,  и вот у меня такая проблема:
я не знаю, как узнать какие рабочие группы есть в сети, и какие компьютеры есть в этих группах..
так как при работе с директориями у меня получается войти только в директорию типа "\\Komp\dir\...".
То есть как мне узнать, что у меня лежит в "сетевом окружении", в "\\Microsoft Windows Network" и ее рабочих группах, а также в "\\Komp\"... ?
объясните, если кто знает..

Автор: mr.DUDA 13.2.2007, 18:47
http://www.codeproject.com/cs/internet/ListNetworkComputers.asp
http://www.codeproject.com/cs/internet/Network_Computers.asp
http://www.codeproject.com/cs/internet/comppickerlib.asp

Автор: Enter 13.2.2007, 22:59
Спасибо большое!
Теперь я знаю, как найти все компьютеры в сети

но осталась проблема: я не могу зайти в главную папку компьютера..
"The UNC path should be of form \\server\share"
а только в подпапки...

Автор: mr.DUDA 13.2.2007, 23:13
Цитата(Enter @  13.2.2007,  21:59 Найти цитируемый пост)
но осталась проблема: я не могу зайти в главную папку компьютера.."The UNC path should be of form \\server\share"а только в подпапки...

Как заходим ? Код в студию. И ещё вопрос: какого рода сеть - рабочая группа или домен ?

Автор: Enter 14.2.2007, 01:15
сеть - вроде рабочая группа.., 
вот упрощал код
имеем:
2 текстовых поля(txtBoxInput и txtBoxFolder)
2 кнопки(buttonDisplay и buttonUp)
2 списка(listBoxFiles и listBoxFolder)

Код

using System;
using System.Text;
using System.IO;
using System.Windows.Forms;

namespace дир
{
    public partial class Form1 : Form
    {
        private string currentFolderPath;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        protected void ClearAllFields()
        {
            listBoxFolders.Items.Clear();
            listBoxFiles.Items.Clear();
            txtBoxFolder.Text = "";
        }
        
       protected void DisplayFolderList(string folderFullName) 
        {
            DirectoryInfo TheFolder = new DirectoryInfo(folderFullName);
            ClearAllFields();
            txtBoxFolder.Text = TheFolder.FullName;
            currentFolderPath = TheFolder.FullName;
            foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories())
                listBoxFolders.Items.Add(NextFolder.Name);
            foreach (FileInfo NextFile in TheFolder.GetFiles())
                listBoxFiles.Items.Add(NextFile.Name);
        }

        private void buttonDisplay_Click(object sender, EventArgs e)
        {
            try
            {
                string FolderPath = txtBoxInput.Text;
                DirectoryInfo TheFolder = new DirectoryInfo(FolderPath);
                if (TheFolder.Exists)
                {
                    DisplayFolderList(TheFolder.FullName);
                    return;
                }
                throw new FileNotFoundException("There is no file or Folder with theese name: " + txtBoxInput.Text);
            }
            catch (Exception ex) 
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void listBoxFiles_SelectedIndexChanged(object sender, EventArgs e)
        {
        }

        private void listBoxFolders_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string SelectedString = listBoxFolders.SelectedItem.ToString();
                string FullPathName = Path.Combine(currentFolderPath, SelectedString);
                DisplayFolderList(FullPathName);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void buttonUp_Click(object sender, EventArgs e)
        {
            try 
            {
                string FolderPath = new FileInfo(currentFolderPath).DirectoryName;
                DisplayFolderList(FolderPath);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void txtBoxInput_TextChanged(object sender, EventArgs e)
        {

        }

        private void txtBoxFolder_TextChanged(object sender, EventArgs e)
        {

        }
    }
}



получился просмотрщик папок..

Автор: mr.DUDA 14.2.2007, 10:36
Нельзя натравить DirectoryInfo на список расшаренных папок, их надо получить другими способами. Например как тут:
http://www.codeproject.com/cs/internet/networkshares.asp

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)