PABLOCORREA
Messages postés13Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention 8 janvier 2008
-
25 juin 2007 à 20:09
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
26 juin 2007 à 10:11
Bonjour,
Dans le cadre de mon travail, je deois developper en vb6 une application qui permet de lister tous les repertoires et sous repertoires (ainsi que les fichiers) d'un pc distant
Celui ci devra etre accessible grace a son nom (présent dans l'AD) et non grace a son adresse ip
Je voudrai utiliser un autre moyen que Winsock
Peut on y acceder par API ou par WMI , ou par une autre moyen
Si oui lequel
Merci pour vos exemples ou vos idées.
Je suis dispo pour tout complément d'infoamtions
@+
A voir également:
Liste de fichiers,rep et sous rep d'un pc distant sans winsock
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juin 2007 à 20:24
Salut
Le seul moyen qui le permette, c'est d'utiliser le nom UNC de la machine et que cette machine partage ses disques.
Genre de syntaxe : \\MaMachineDistante\C
Ces noms sont ceux qui doivent apparaitre dans tes "favoris réseau"
Ensuite, il te suffit de lister les répertoires et fichiers comme s'il s'agissait de ta propre machine (Dir Récursif)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juin 2007 à 20:53
Le nom du PC ne suffira pas, il faudra aussi lui donner la lettre du lecteur (C, D ...)
Et tu cherches "dir récursif" dans le moteur de recherche du site
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 25 juin 2007 à 20:56
Bonsoir,
Ce lien , en vbs et avec wmi, pourrait vous interesser (voir l'exemple avec le .txt).
Evidemment, il ne répond pas entièrement à votre demande.
Reste à remplacer Network par AD ou SAM
Une recherche sur WMI, AD, etc... sur le forum (et codyx) s'impose.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 25 juin 2007 à 22:55
Re,
Pour selectionner tous les fichiers, sans tenir compte de leur extension:
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
For Each objDisk in colDisks
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Drive = '" & objDisk.Name & "'")
et suppression du tableau.
Dans l'exemple proposé, il y a recherche sur tous les disks hards du server distant (partagés ou non partagés).
Si on se met dans le cadre de sauvegarde de données, les méthodes proposées
par Jack et Casy sont amplement suffisantes et beaucoup plus rapides.
L'utilisation de wmi autorise une pause casse-croûte (voir la légalité de cette action, pas la pause, mais le listage de tous les répertoires d'un personnel, dans une entreprise) .
De plus, mon exemple est incomplet. L'utilisation du Dictionary diminuerait la lenteur du script (ou augmenterait la performance du script).
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
For Each objDisk in colDisks
Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Drive = '" & objDisk.Name & "'")
For Each objFile in colFiles
If UCase(Left(objFile.Path,10)) <> "\RECYCLER" And _
UCase(Left(objFile.Path,27)) <> "\SYSTEM VOLUME INFORMATION" Then
If objDico.Exists(objDisk.Name) Then
OldList = objDico.Item(objDisk.Name)
objDico.Item(objDisk.Name) = OldList & "," & objFile.Name
Else
objDico.Add objDisk.Name , objFile.Name
End If
End if
Next
Next
Set colFiles = Nothing
Set colDisks = Nothing
Set objWMIService = Nothing
'Creation fichier txt par server
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objNetwork = CreateObject("Wscript.Network")
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objTxt = objFso.OpenTextFile(objWshShell.SpecialFolders("Desktop") & _
"" & "verif_" & objNetwork.ComputerName & ".txt", 2, True)
elements = objDico.Items
i "" : j ""
For i = 0 To objDico.Count-1
ligne = Split(elements(i),",")
For j = 0 To UBound(ligne)
objTxt.Write ligne(j) &vbCrLf
Next
Next
objTxt.Close
'Destruction des objets
Set objDico = Nothing
Set objTxt = Nothing
Set objFso = Nothing
Set objWshShell = Nothing
Set objNetwork = Nothing
MsgBox "fin du script" &vbCrLf& Now &vbCrLf& StartScript &vbCrLf& _
DateDiff("n", StartScript,Now) & " minutes"