ahlemlo
Messages postés225Date d'inscriptionsamedi 7 avril 2007StatutMembreDernière intervention21 mai 2009
-
26 mai 2007 à 09:05
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 2009
-
28 mai 2007 à 15:01
bonjour à tous
pouvez vous m'aider svp:
lors de la connexion à une machine distant avec WMI il s'affiche un message "Accés réfusé" malgré que nous avons utilisés les options de connection de WMI (connectionoption()),le parfeu est désactivé.
je pense q'il est un probléme de sécurité mais je ne sais pas ou?
merci
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 28 mai 2007 à 15:01
Salut, tu dis avoir utilisé le ConnectionOption mais dans ton code je ne vois que le minimum (user, password), pour du Wmi distant il faut aussi renseigner le Authentication, et Impersonification. Si ça marche en local sans ça, c est parcequ en local le Wmi utilise le compte courant.
Donc comme précédment, il faut renseigner ses deux propriétés (ici), pour que ton programme puisse être authentifié par le pc distant, il faut aussi que le pc distant puisse le reconnaitre donc il faut autoriser les requetes Wmi distante (via dcomcnfg). As tu aussi regardé si le Wmi était bien installé (uilise Wbemtest)
Enfin, il faut faire attention aux exceptions, dans ton code, aucune gestion n'est prévue!
ahlemlo
Messages postés225Date d'inscriptionsamedi 7 avril 2007StatutMembreDernière intervention21 mai 2009 28 mai 2007 à 12:05
bonjour
j'ai pas trouvé une solution qui peut m'aider comment on affiche les information d'un pc distant.
c'est bien passé avec un machine locale.
merci
System.Management.ManagementScope aManagementScope = new System.Management.ManagementScope(@"\" +ipaddr+ @"\root\cimv2",aConnectionsOptions );
// Sélection des dispositifs réseaux activés
System.Management.ObjectQuery aObjectQuery = new System.Management.ObjectQuery("Select * from Win32_NetworkAdapter");
// Extraction de la collection d'objets en fonction de la requête WMI
System.Management.ManagementObjectSearcher aManagementObjectSearcher = new System.Management.ManagementObjectSearcher(aManagementScope, aObjectQuery);
// Affectation du résultat de la requête WMI
System.Management.ManagementObjectCollection aManagementObjectCollection = aManagementObjectSearcher.Get();
// Chaque enregistrement de la collection représente une interface réseau
foreach (ManagementObject aManagementObject in aManagementObjectCollection)
{
//Ajout d'un retour chariot pour séparer à l'affichage les objets extraits.
textBox3.Text += "\r\n";
//PropertyData représente les informations retournées par la propriété WMI de l'objet extrait par le ManagementObject utilisé.
foreach (System.Management.PropertyData aPropertyData in aManagementObject.Properties)
{ if (aPropertyData.Name "AdapterType" || aPropertyData.Name "DeviceID" || aPropertyData.Name == "Description" || aPropertyData.Name == "MACAddress" || aPropertyData.Name == "NetworkAddresses" || aPropertyData.Name == "NetConnectionID" || aPropertyData.Name == "SerialNumber")
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 28 mai 2007 à 12:52
Il y a sans doute un problème d'autentification sur le pc distant ; quand tu te connectes au pc distant il faut que celui-ci te reconnaise et t'accorde les droit, c'est à ça que sert les propriétés Authentication et Impersonification. En face, sur le pc distant, tu dois avoir autorisé l'exécution de ce genre de requête : regarde les limites de sécurités COM
t_barbillon
Messages postés341Date d'inscriptionmercredi 8 juin 2005StatutMembreDernière intervention10 février 20092 28 mai 2007 à 13:00
Au passage quelque points : Si tu veux récupérer seulement certaines données (apparement c'est ce que tu fais), tu peux changer ta requête et écrire : SELECT AdapterType, DeviceId,.... From Win32_NetworkAdapter
Il arrive que certains champs soient nuls donc ta ligne de code :
System.Convert.ToString(aManagementObject[aPropertyData.Name]) va lever une exception de type ArgumentNullException, il faut que tu testes l'objet avant de le caster.
Concaténer des chaines de caractères est pas très "propre", utilise plutôt un StringBuilder ou la méthode Format (String.Format)
Enfin, je ne comprend pas pourquoi stocker tes résultats dans une TextBox, pourquoi ne pas utiliser une ListBox ?
ahlemlo
Messages postés225Date d'inscriptionsamedi 7 avril 2007StatutMembreDernière intervention21 mai 2009 28 mai 2007 à 13:11
on a essayer avec cette méthode rien ne ce passe.
avec un pc local tous passe bien.
le code que je te donner ci dessous est ce que c'est juste oui ou non.
vraiment je suis perdu.
en tous cas merci pour votre aide