Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau .NET Discussion :

Lister les ordinateurs, nas, etc du réseau


Sujet :

Réseau .NET

  1. #1
    Futur Membre du Club
    Lister les ordinateurs, nas, etc du réseau
    Bien le bonjour,

    je suis confronter a un problème de découverte de découverte sur mon réseau....

    je développe une application de synchronisation de fichier FTP<>LOCAL
    de ce coté tout fonctionne très bien (avec la librairie de winSCP)

    pour faciliter la configuration et pour une simplicité d'affichage je re-écris mon propre "OpenDialog", qui peut chercher soit sur des partages en local soit sur un serveur FTP, suivant de quel "coté" l'on configure...

    mon soucis viens quand je cherche en "Local", la je liste tous les ordinateurs/nas du réseau sur le quel je me trouve. basé sur les infos trouvée là
    https://csharp.hotexamples.com/examples/Trinet.Networking/ShareCollection/-/php-sharecollection-class-examples.html

    cela fonctionne très bien sur la plupart des ordinateurs sur le quel l'application est installée :-)

    mais toutefois, tel un village gaulois bien connu, un ordinateur résiste...

    sur l'un des ordis l'application trouve 5 serveur, et 11 Drives (local & partage réseau)

    sur l'autre ordis l'application trouve les Drives locaux & partage réseau, mais pas les ordinateurs & NAS

    Alors, les deux SMB sont activé, j'au essayé sans firewall, mais rien n'y fait
    l'ordinateur lui-même "Vois" bien les NAS....

    là je cale:-)

    un idée, peut être
    Merci d'avance

    Amitiés
    Lionel de Genève

    EDIT:
    un exemple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private void Button1_Click(object sender, EventArgs e)
            {
                DirectoryEntry root = new DirectoryEntry("WinNT:");
     
                foreach (DirectoryEntry computers in root.Children)
                {
                    foreach (DirectoryEntry computer in computers.Children)
                    {
                        if (computer.Name != "Schema")
                        {
                            Debug.Print(computer.Name + "\r\n");
                        }
                    }
                }
            }

  2. #2
    Futur Membre du Club
    Bonjour,
    Auriez-vous une idée de ou je peut poser cette question ?

    Amitiés
    Lionel

  3. #3
    Futur Membre du Club
    je doit être le seul dans mon trou a avoir ce genre de soucis :-)

    je vient de refaire ce portable de malheur... sans aucun résultat

  4. #4
    Expert éminent
    Bonjour Lionel,

    C'est un peu chaud de t'aider, car visiblement le comportement est lié à une librairie que tu utilises, ou à l'environnement hôte (probablement les deux).

    Par conséquent, ça va être dur de t'éclairer sur ton code.

    Première chose à faire, identifier la source probable de l'anomalie :

    - Y a-t-il qu'un seul PC qui déconne ?
    - Quelles sont les différences entre ce PC qui déconne et ceux qui fonctionne ?

    Regarde notamment :
    - Les droits de l'utilisateur connecté
    - La version de l'OS et ses hotfix
    - La configuration du réseau (DHCP, DNS, NetBIOS, serveur WINS, etc.)
    - La présence d'un routeur ou autre élément qui bloque les trames broadcast sur le réseau

    Enfin, si tu trouves une piste (ou pas) pose la question directement sur le site de la librairie que tu utilises, ou contacte directement l'auteur.
    Le gars a dans son code des cas pour Windows NT4 versus 9x.
    Ca sent donc la lib particulièrement ancienne… et potentiellement incompatible avec des OS plus récents (Windows 10, Windows Server par exemple).
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Futur Membre du Club
    Merci StringBuilder,

    Je suis du même avis (un peut chaud)

    Oui il n'y a qu'un seul PC qui déconne :-(

    - Les droits de l'utilisateur connecté
    Admin dans tout les cas
    - La version de l'OS et ses hotfix
    Win10, même release
    - La configuration du réseau (DHCP, DNS, NetBIOS, serveur WINS, etc.)
    oui sauf Netbios (je ne sais pas ou configurer)
    - La présence d'un routeur ou autre élément qui bloque les trames broadcast sur le réseau
    je n'ai pas de switch "Intelligent", et j'atteind sans soucis les NAS avec l'interface Explorer de Windows

    :-), je n'utilise pas de librairie DirectoryEntry fait partie de System.DirectoryServices

    Ca sent donc la lib particulièrement ancienne…
    qui marche parfaitement sur toutes les autres machine :-)


    cela dis je suis en train d'essayer un truc alternatif, je poste si succés !

    en tout cas merci

  6. #6
    Futur Membre du Club
    Voila que j'essaye avec un autre portable, même symptôme :-( :-(

    bon a part ça j'ai trouvé une solution de contournement, je n'aime pas ça..., mais bon ça marche....

    avec la librairie "GongSolution", ça retourne la liste des

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public sealed class ShellNetworkComputers : IEnumerable<string>
        {
            public IEnumerator<string> GetEnumerator()
            {
                GongSolutions.Shell.ShellItem folder = new GongSolutions.Shell.ShellItem((Environment.SpecialFolder)GongSolutions.Shell.Interop.CSIDL.NETWORK);
                IEnumerator<GongSolutions.Shell.ShellItem> e = folder.GetEnumerator(GongSolutions.Shell.Interop.SHCONTF.FOLDERS);
     
                while (e.MoveNext())
                {
                    //Debug.Print(e.Current.ParsingName);
                    //yield return e.Current.ParsingName;
                    yield return e.Current.DisplayName;
                }
            }
     
            IEnumerator IEnumerable.GetEnumerator()
            {
                return GetEnumerator();
            }
        }