Page 1 sur 1
[..] WNetAddConnection Besoin d'informations
Posté : dim. 22 août 2010 22:58
par Sh4dows
Bonsoir à tous,
J'aurais besoin si possible, d'avoir quelques informations sur WNetAddConnection !
Soit en autoit la/les fonctions :
Code : Tout sélectionner
_WinNet_AddConnection()
_WinNet_AddConnection2()
_WinNet_AddConnection3()
J'aimerais savoir ce qu'il est possible de faire avec, j'ai entendus (vu un code) permettant de transférer un fichier à travers un réseau LAN sur un autre Pc du réseau.
Par exemple le Pc : "192.168.1.5" Envoie un fichier "bjr.txt" au Pc : "192.168.10.4" !
J'ai parcourus la librairie MSDN de Microsoft :
http://msdn.microsoft.com/en-us/library ... S.85).aspx
Mais je comprend pas tout...
Si une personne pouvait m'éclaircir sur le sujet !
Code : Tout sélectionner
#Include <WinNet.au3>
_WinNet_AddConnection2($sLocalName, $sRemoteName [, $sUserName = 0 [, $sPassword = 0 [, $iType = 1 [, $iOptions = 1]]]])
Merci d'avance...
Cordialement Sh4dows
Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 13:51
par SrBelial
quelques petits points pour éclaircir un peu l'affaire :
_WinNet_AddConnection ne devrait plus être utilisée, elle n'est présente que pour des questions de compatibilité avec des Windows 16bits
à la place il est préférable d'utiliser _WinNet_AddConnection2 ou _WinNet_AddConnection3
(la différence entre les deux reste obscure pour moi, j'ai pas cherché plus)
leur utilisation tel que décrite dans la doc permet de déterminer les points suivants :
* ces fonctions permettent de connecter deux ressources distantes entre elles (disque, port imprimante, ...)
* ou bien uniquement de se connecter à une ressource distante (disque, port imprimante, ...)
* suivant la configuration du réseau il faut ou non utiliser un login+password
* ces fonctions seules ne servent pas à envoyer ou recevoir des fichiers à distance, elles constituent uniquement la première étape, permettant l'ouverture d'une connexion.
si tu as le code dont tu parles, je t'encourage vivement à regarder ce qui est fait après la connexion car à mon avis c'est là que se trouvent les difficultés pour échanger des fichiers à distance
Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 15:40
par Sh4dows
Oué je pense qu'il va falloir que je fasse une analyse approfondit sur la chose...
Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 17:53
par Sh4dows
Déjà il faut réussi à établir une connexion entre 2 Pc ce qui est logiquement possible !
Code : Tout sélectionner
_WinNet_AddConnection2($sLocalName, $sRemoteName [, $sUserName = 0 [, $sPassword = 0 [, $iType = 1 [, $iOptions = 1]]]])
$sLocalName : Name of a local device to be redirected, such as "F:" or "LPT1". The string is treated in a
case-insensitive manner. If 0, a connection to the network resource is made without redirecting the local
device.
► Afficher le texte
Pourquoi "F:" ou "LPT1" ? Quelle différence ? Désignation ?
Perso, je pense que c'est F: !!
$sRemoteName : Name of the network resource to connect to
► Afficher le texte
Ici, la description semble plus claire, je mettrais la position de ma machine sur le réseaux par exemple : 192.168.0.5
Ou bien directement le nom : \\SH4DOWS-PC
Ensuite nous avons :
Les ID de connection !
Puis :
$iType : [optional] Specifies the type of network resource to connect to:
0 - Any (only if $sLocalName is 0)
1 - Disk
2 - Print
► Afficher le texte
Alors donc normalement dans notre cas on indique 1 en paramètre !
Et le dernier paramètre semble inintéressant...
Ce qui me donne :
Code : Tout sélectionner
#Include <WinNet.au3>
_WinNet_AddConnection2("F:", "\\SH4DOWS-PC", "*****", "*****", 1)
Si j'utilise une boite de dialogue afin de m'afficher la valeur de retour j'obtient un False !
Or si je fais :
Code : Tout sélectionner
#Include <WinNet.au3>
$VAL = _WinNet_AddConnection2("", "\\SH4DOWS-PC", "Pseudodemasessionwindows", "Passwddemasessionwindows", 1)
Le code me retourne un True !
A quoi correspond la première valeur ? Si elle est = 0 c'est un test en local ! Mais Encore ???
Edit :
► Afficher le texte
Je progresse, lentement mais surement
Pour "établir" on va dire préparer la connexion PC à PC il suffit de faire :
Code : Tout sélectionner
$VAL = _WinNet_AddConnection2("", "\\PC-de-Isabelle", "PseudoSession", "PassSession", 1) ;Pour le premier paramètre laissez vide ! Pour le second il vous faudra le nom du Pc !!
MsgBox(0, "", $VAL)
Si vous êtes connecter la fonction vous retourne True sinon False.
Attention ceci ne fonctionne que sur un réseau LAN
Continuons..
Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 18:01
par SrBelial
le premier paramètre c'est la ressource locale que tu veux connecter ...
en l'occurence si tu veux connecter le disque dur de ta machine, tu mets la lettre de ton disque dur ...
(si t'as pas de disque dur appelé F: ça marchera pas, essaie avec C: ou D:)
pour le LPT1, typiquement ça représente un port imprimante ... c'est au cas ou tu veux que la fonctionne connecte un port local d'imprimante de ta machine, pour que qqn d'autre à distance puisse s'en servir par exemple.
la ressource distante en effet c'est un nom réseau qu'il faut mettre, soit sous forme d'ip locale, soit comme tu l'as fait en utilisant son nom d'hôte .... je pense qu'il est possible de rajouter un répertoire partagé après par exemple, si tu ne souhaites pas accéder à l'intégralité de la machine distante.
les id de connexion tu peux faire en sorte suivant les options "$iOptions" que windows t'ouvre une fenêtre pour les demander à l'utilisateur.
$itype tu l'as bien compris : ça détermine à quel type de ressource tu te connecte
et au contraire le dernier paramètre (bien qu'un peu plus compliqué) se révèle très intéressant ... ^__^
il fournit certaines options qui te permettront de jouer un peu sur la sécurité de la connexion et notamment sur la sauvegarde des infos de connexion pour qu'elles ne soient pas redemandées à chaque appel de la fonction.
(et aussi elles permettent de forcer l'ouverture de la fenêtre de login)
...............................................................................................
Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 23:26
par Sh4dows
Merci pour le truc de l'imprimante
Sinon pour le transfert de fichier j'ai pensé à faire comme suit :
Code : Tout sélectionner
$VAL = _WinNet_AddConnection2("", "\\SH4DOWS-PC", "Sh4dows", "motdepass", 1)
MsgBox(0, "Test", $VAL) ;Juste pour afficher la valeur de retour !
$VAL = FileCopy(@ScriptDir&"\Explorer.exe", "\\SH4DOWS-PC\Users\Public\Documents"&"\Explorer.exe", 1)
MsgBox(0, "Test", $VAL) ;Juste pour afficher la valeur de retour !
$VAL = _WinNet_CancelConnection2("\\SH4DOWS-PC")
MsgBox(0, "Test", $VAL) ;Juste pour afficher la valeur de retour !
Le souci c'est que pour faire des test la j'ai eu quelques soucis, le code fonctionne mais j'ai pu faire des tests seulement avec 1 Pc !
Donc avec 1 Pc pas besoin de s'authentifier, les _WinNet... ne servent à rien !
Va falloir attendre demain

Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 23:33
par SrBelial
Re: [..] WNetAddConnection Besoin d'informations
Posté : lun. 23 août 2010 23:40
par Sh4dows
Ben demain normalement je procède à un test en condition réelle
Nous verrons bien ce que l'avenir nous réserve
Effectivement c'est grâce à toi que j'ai, enfin que l'ont a pu avancés !
Mais le sujet n'est pas Résolut
A suivre dans le prochain épisode...
Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 09:14
par Sh4dows
@SrBelial j'ai une bonne nouvelle, tout marche
En accédant manuellement à mon autre Pc j'eus une demande d'identification, je ne me suis pas loguer puis est lancé mon script bien évidement qui lui la fait à ma place et à bien copier le fichier
Code :
Code : Tout sélectionner
$VAL = _WinNet_AddConnection2("", "\\PC-de-Isabelle", "Isabelle", "*****", 1)
MsgBox(0, "", $VAL)
$VAL = FileCopy(@ScriptDir&"\Explorer.exe", "\\PC-de-Isabelle\Users\Public\Documents"&"\Explorer.exe", 1)
MsgBox(0, "", $VAL)
$VAL = _WinNet_CancelConnection2("\\PC-de-Isabelle")
MsgBox(0, "", $VAL)
Cependant je doit procéder encore à différents tests pour voir ce que la copie donne si je ne m'identifie pas au préalable avec "WiNet" !
Pour ceux qui n'auraient pas compris l'utilité de ce code, il permet de transférer un fichier vers une autre machine de type Pc sur un Réseau Local (LAN | Local Area Network)
À suivre...
Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 09:17
par SrBelial
cool ^____^ donc ça fonctionne pour de vrai !!

Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 09:20
par Sh4dows
oui
J'imagine déjà tous ce que je vais pouvoir faire avec

Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 18:58
par Sh4dows
Donc,
Si on n'utilise pas "_Winet..", ce n'est même pas la peine d'essayer
Ensuite je me suis dit qu'il manquait quelque chose...
Et j'ai alors pensé à l'exécution distante !
J'ai donc fais des recherche Google (Et oui, j'ai Googlé

), et suis tombé grâce à un ami en grande partie, sur un Tool nommé : PsExec
Vous pouvez le trouvé ici :
http://technet.microsoft.com/fr-fr/sysi ... 97553.aspx
J'ai donc construit mon code et j'ai rencontré des problèmes (Il ont toujours là cela...

)
Mais en utilisant la merveilleuse petite fonction "Recherche" du forum, je suis tombé un problème quasiment similaire (De loin..)
Topic :
http://www.autoit.fr/forum/viewtopic.php?f=3&t=264
J'ai alors, enfin je pense avoir construit ma ligne d'exécution en conséquence ce qui nous donne :
Code : Tout sélectionner
RunWait(@ComSpec & " /k " & "PsExec "&$LANAdress&" -u "&$LANUsername&" -p "&$LANPassword&" C:\Users\Public\Documents\Explorer.exe", "")
Mais voilà, (Voici enfin mon petit souci

) j'ai un accès refusé à la machine distante alors que tous les paramètres sont Valide !!
Savez vous comment résoudre ce problème ?
Merci d'avance

Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 19:30
par SrBelial
peut être une toute petite minuscule idée ... :
est ce que l'utilisateur que tu utilise possède des droits sur la machine distante ?
(et comment sont gérés ces droits ? c'est un domaine ou un workgroup ?)
Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 19:32
par Sh4dows
Question Droit, il est Admin du Pc, c'est un workgroup et sur le réseau il peut accéder aux machine qui partage des fichier et inversement !
C'est la seul machine sous Vista !
Si j'ai mal répondus au question n'hésites pas...

Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 19:35
par SrBelial
donc si je comprends bien, si tu utilise les mêmes infos que le script en te connectant directement sur la machine ("distante"), alors tu es en admin, c'est bien ça ???
bah du coup j'ai pas d'autre idée pour l'instant ....^__^
j'y réfléchis ......
....
Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 19:50
par Sh4dows
Ben j'ai 2 PC, 2 comptes Admin différents (Sessions) c'est à dire un compte sur chaque Pc !
Et de l'un, j'essaye d'exécuter mon fichier sur l'autre. Ce n'est pas un problème de connexion ni de transfert de fichier, juste d'exécution...
J'ai exactement ce message dans cmd :
Cmd Of Sh4dows a écrit :
Couldn't access PC-DE-ISABELLE:
AccÞs refusÚ.
Re: [..] WNetAddConnection Besoin d'informations
Posté : mar. 24 août 2010 20:15
par Sh4dows
J'ai trpuvé ce post intérresant
http://autoitscript.fr/forum/viewtopic. ... xec#p20237.
Tous simplement car @jorioux nous précise : "votre compte doit être dans le groupe administrateurs sur le poste distant" !
C'est le cas, j'ai tester son code et j'obtient encore et toujours le meme résultat !
Une erreur

Re: [..] WNetAddConnection Besoin d'informations
Posté : mer. 25 août 2010 00:06
par Sh4dows
Me voici pour un nouveau Rapport
Ce code fonctionne,mais bien évidemment nous sommes sur 1 seul PC !
Code : Tout sélectionner
RunWait(@ComSpec & " /k " & "PsExec "&$LANAdress&" -u "&$LANUsername&" -p "&$LANPassword&" C:\Users\Public\Documents\Explorer.exe", "")
De cette manière, nous avons également ce code qui fonctionne mais est un peu plus long :
Code : Tout sélectionner
RunWait(@ComSpec & " /k " & "PsExec "&$LANAdress&" -u "&$LANUsername&" -p "&$LANPassword&" "&$LANAdress&"\Users\Public\Documents\Explorer.exe", "")
Je pense que le problème vient de ma configuration sur le réseau, le Pc Vista manque de droit sur le réseau tout simplement...
Tout ceci est à confirmer, je fais des tests approfondit demain !! *00:04 heu... Vu l'heure, ben tout à l'heure alors...
P.S : Désoler pour le triple Post
Je vais éviter dorénavant !!