Monter un lecteur réseau à distance!

Résolu
Signaler
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
-
Messages postés
1
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 avril 2007
-
Bonjour a tous!

J'aimerais pouvoir monter des lecteurs réseau sur des pc distant via un programme vb.net !

J'ai bien trouver des informations pour monter des lecteurs réseau mais
je ne peux le faire que sur le poste executant le programme! Comment
faire dans le cas d'un PC distant???

Merci d'avance!

12 réponses

Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
7
Re ;O)

J'oubliais; ce code est pour VB6. Il faut préalablement référencer la bibliothèque Microsoft WMI Scripting.
En VB.NET, je sais que WMI est entièrement intégré et que l'objet existe déjà. Voir System.Management.

Guy
3
Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
7
Salut ;O)

Vois l'utilisation de WMI.

Guy
0
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Merci, justement j'ai cherché ce que je pouvais faire avec WMI est je
n'ai rien trouvé qui me permette de faire des montages réseau!!!

Si tu avais un nom de classe WMI dans laquelle je pourrais trouvé une méthode ca m'aider beaucoup,

D'avance merci!!
0
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
Salut,

Si j'ai bien compris, par "monter un lecteur réseau" tu veux que le PC distant partage une ou plusieurs ressources auxquelles tu pourras accéder ?
WMI ou autre, tu ne pourras pas "monter un lecteur réseau" sur un PC distant sans que l'utilisateur n'ait partagé lui même ses ressources grâce aux outils windows ou via un prog qui devra s'exécuter de son PC. Tu as pu le vérifier toi-même.

Si c'est dans le cadre d'un LAN d'entreprise, je te conseille de prendre conseil auprès des admins réseau de ta boite.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Salut,

Non c'est plus simple que ca,

Je pars du principe que tout est déja partagé sur les serveurs, ce que
je veux, c'est juste faire l'equivalent de l'outil "Connecter un
lecteur réseau" du poste de travail dans windows, mais executer cette
commande sur un poste distant.



Exemple:

Serveur: \\mon_serveur\partage\ --------------------->Poste client Z:

Connecter le lecteur réseau pointant sur \\mon_serveur\partage\ sur le
poste client via un programme VB.net à partir d'une machineX.
0
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Aprés recherche sur MSDN, j'ai réussi a faire cette fonction.... qui ne marche pas

En effet, via WMI c'est possible de connecter un lecteur réseau a
distance seulement sur Windows 2003...est donc ne le possédant
pas, je ne peut la tester.

Si quelqu'un possdant cette OS pouvait me dire si cette fonction marche!

Je suis toujours a la recherche d'une solution pour Win2k et XP, je compte sur vous

Merci pour votre aide



Public Function mountpoint(ByVal ip As String, ByVal lecteur As String, ByVal cible As String) As Integer

Dim objWMIService = GetObject("winmgmts:" _


& "{impersonationLevel=impersonate}!\" & ip &
"\root\cimv2")

Dim colItems = objWMIService.ExecQuery _


("Select * From Win32_Volume Where Name = '" & lecteur & "\'")

Dim objitem As Object

Dim errReturn As Integer = -1



For Each objitem In colItems

errReturn = objitem.AddMountPoint(cible)

Next

Return errReturn

End Function



----------------Appel de la fonction

'MsgBox(mountpoint("192.6.1.51", "S:", "\\192.6.1.1\commun"))



Retourne -1 dans mon cas
0
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
Alors essaie avec les apis :

Private Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long
Private Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As Long


Const WN_SUCCESS = 0 ' The function was successful.
Const WN_NET_ERROR = 2 ' An error occurred on the network.
Const WN_BAD_PASSWORD = 6 ' The password was invalid.


Function AddConnection(MyShareName As String, MyPWD As String, UseLetter As String) As Integer
AddConnection = WNetAddConnection(MyShareName, MyPWD, UseLetter)
End Function


Function CancelConnection(DriveLetter As String, Force As Integer) As Integer
CancelConnection = WNetCancelConnection(DriveLetter, Force)
End Function

' pour connecter
variable = AddConnection("[file://serveur/ressource \\serveur\ressource]", "password", "z:")
' pour déconnecter
variable = CancelConnection("z:", 1)

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Ok merci cette methode marche impek mé le probléme, c'est que de cette
maniére le lecteur est connecter sur la machine executant le programme.
Hors moi ce qui m'interrese, c'est de connecter le lecteur sur une
machine X de mon réseau.

Ce qui manque juste a ton code ci-dessus c'est la possibilité de
connecter un lecteur a distance, mais je doute qu'avec les API ce soit
possible,

Je vais bien détaillé:

J'ai:

-un serveur X avec des fichiers partagés

-un PC Y executant le programme de connexion

-une station de travail Z sur laquel le programme du PC Y doit connecter le lecteur rézo pointant sur X!



Plus clair comme ca !!!!



Merci de m'aider car je n'ai plus aucune idée!
0
Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
7
Salut ;O)

Tu peux grâce à WMI lancer une commande à distance en créant un process distant. Faut-il seuleument avoir les droits sur la machine.

Voici une fonction qui devrait fonctionner.

Si la machine distante n'a pas besoin d'une authentification car le user appelant est connu et ayant les droits adéquats :
RemoteNetUse "LAMACHINE"

Dans le cas d'une authentification nécessaire :
RemoteNetUse "LAMACHINE", False, "Admin", "LeMotDePasse"
Public Function RemoteNetUse(Host As String, Optional UserCurrentCredentials As Boolean True, Optional User As String "", Optional Password As String = "") As Long


Dim strCommand As String
Dim lngProcessID As Long
Dim lngResult As Long
Dim oLocator As SWbemLocator
Dim oServices As SWbemServices
Dim oStartup As Object
Dim oConfig As Object
Dim oProcess As Object

RemoteNetUse = 0

Set oLocator = New WbemScripting.SWbemLocator

fRemoteCommand = 0

If UserCurrentCredentials Then
Set oServices = oLocator.ConnectServer(Host)
Else
Set oServices = oLocator.ConnectServer(Host, "root\cimv2", User, Password)
oServices.Security_.ImpersonationLevel = 3
End If

Set oStartup = oServices.Get("Win32_ProcessStartup")
Set oConfig = oStartup.SpawnInstance_
oConfig.ShowWindow = 0


Set oProcess = oServices.Get("Win32_Process")
'La ligne de commande qui sera lancée à distance
strCommand = "NET USE Z: [file://mon_serveur/partage \\mon_serveur\partage] /PERSISTENT:YES"
lngResult = oProcess.Create(strCommand, Null, oConfig, lngProcessID)
fRemoteCommand = lngResult

errorResume:

Set oLocator = Nothing
Set oServices = Nothing
Set oStartup = Nothing
Set oConfig = Nothing
Set oProcess = Nothing


Exit Function


End Function

En espérant que cela ira. De mon côté, cela marche à merveille dans le réseau d'entreprise où je bosse.

Guy
0
Messages postés
195
Date d'inscription
vendredi 3 juin 2005
Statut
Membre
Dernière intervention
13 juillet 2006
3
Wouaaah, Longue vie a toi Neo.Balistik!!!!

Je vais tester et adapter ça le plus vite possible sur vb.net!!! Mais si ca marche .....

Merci encore d'aider les étudiants, sympa pour eux lol !!!!!
0
Messages postés
796
Date d'inscription
jeudi 17 mai 2001
Statut
Membre
Dernière intervention
5 mai 2009
7
Tu vas à présent devoir traduire cela en VB.NET.
Mais sache que lancer un process sur une autre machine fonctionne très bien avec WMI.
Donc, a priori, il n'y a aucune raison que cela ne fonctionne pas. Surtout si tu as les droits nécessaires sur la machine hôte.

Bonne chance.
Guy
0
Messages postés
1
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
10 avril 2007

est ce que quelqu'un l'aurai en version VB.NET :s ca serai cool moi
meme ne programmant pas, ca serai cool si quelqu'un l'a adapté.

Cordialement,

Fas3r
0