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
Quelqu'un aurait des infos sur cette magouille ?
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
Je viens de tester cette routine trouvée sur codeproject :
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.
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
J'ai beau chercher, je ne vois pas de messages sur le sujet...
Partager