Bonjour,
Dans mon programme j'ai besoin de connaître les serveurs présent sur le réseau domestique.
Depuis "je ne sais pas quelle mise à jour de windows 10", la fonction ne trouve plus que l'ordinateur sur lequel est le programme. Pas très utile
Sur un portable où j'avais interdit les mise à jour de windows 10, le programme tourne sans problème et trouve bien les ordinateurs et NAS du réseau. La build de ce portable est 1511. Mes autres PC sont en 1709 (sauf une tablette en 1607 mais qui ne voit rien non plus).

Je met la routine au cas où, mais comme elle fonctionnait sans problemes avant, je ne pense pas que ce soit elle

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
22
23
24
25
26
27
28
29
Public Function getNetworkComputers() As ArrayList
        Dim networkComputers As New ArrayList()
        Const MAX_PREFERRED_LENGTH As Integer = -1
        Dim SV_TYPE_WORKSTATION As Integer = 1
        Dim SV_TYPE_SERVER As Integer = 2
        Dim buffer As IntPtr = IntPtr.Zero
        Dim tmpBuffer As IntPtr = IntPtr.Zero
        Dim entriesRead As Integer = 0
        Dim totalEntries As Integer = 0
        Dim resHandle As Integer = 0
        Dim sizeofINFO As Integer = Marshal.SizeOf(GetType(_SERVER_INFO_100))
        Try
            Dim ret As Integer = NetServerEnum(Nothing, 100, buffer, MAX_PREFERRED_LENGTH, entriesRead, totalEntries, _
             SV_TYPE_WORKSTATION Or SV_TYPE_SERVER, Nothing, resHandle)
            If ret = 0 Then
                For i As Integer = 0 To totalEntries - 1
                    tmpBuffer = New IntPtr(CInt(buffer) + (i * sizeofINFO))
                    Dim svrInfo As _SERVER_INFO_100 = CType(Marshal.PtrToStructure(tmpBuffer, GetType(_SERVER_INFO_100)), _SERVER_INFO_100)
                    networkComputers.Add(svrInfo.sv100_name)
                Next
            End If
        Catch ex As Exception
            MessageBox.Show("Problem with acessing " + "network computers in NetworkBrowser " & vbCrLf & vbCrLf & vbCrLf & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
            Return Nothing
        Finally
            NetApiBufferFree(buffer)
        End Try
        Return networkComputers
    End Function
Quelqu'un aurait des infos sur cette magouille ?

Je viens de tester cette routine trouvée sur codeproject :

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
22
23
24
25
26
27
Sub FindingThreats()
        ListView1.Items.Clear()
        Dim childEntry As DirectoryEntry
        Dim ParentEntry As New DirectoryEntry
        Try
            ParentEntry.Path = "WinNT:"
            For Each childEntry In ParentEntry.Children
                Select Case childEntry.SchemaClassName
                    Case "Domain"
 
                        Dim SubChildEntry As DirectoryEntry
                        Dim SubParentEntry As New DirectoryEntry
                        SubParentEntry.Path = "WinNT://" & childEntry.Name
                        For Each SubChildEntry In SubParentEntry.Children
                            Select Case SubChildEntry.SchemaClassName
                                Case "Computer"
                                    ListView1.Items.Add(SubChildEntry.Name)
                            End Select
                        Next
                End Select
            Next
        Catch Excep As Exception
            MsgBox("Error While Reading Directories : " + Excep.Message.ToString)
        Finally
            ParentEntry = Nothing
        End Try
    End Sub
Même résultat : listview1 est vide sur les windows 10 récent mais contient les noms des serveurs sur mon portable équipé d'un windows 10 plus ancien.

J'ai beau chercher, je ne vois pas de messages sur le sujet...