SupaLou
Messages postés74Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention19 septembre 2006 6 juil. 2006 à 14:29
okey d'accord je te remerci de confirmer.
Cependant j'ai trouvé une autre méthode mais je n'arrive pas a la faire fonctionner comme je le souhaite.
Grace aux WMI et à la classe Win32_Directory il est apparement possible de récupérer les infos qui m'interressent seulement j'ai un problème au niveau de ma requete WQL. Voilà ce que jai fait:
// Spécification de tous les paramètres requis pour créer la connexion WMI
ConnectionOptions option =
new ConnectionOptions();
option.Username = userName;
option.Password = password;
// Utilisation du namespace WMI dans lequel les opérations de gestion vont être effectuées.
managementScope =
new
System.Management.ManagementScope("\\\" + hostname + "\\root\\cimv2", option);
managementScope.Connect();
// Création de la requête WQLObjectQuery objetQuery new ObjectQuery("Select * From Win32_Directory Where Name 'D:\\test.txt'
");
// La classe ManagementObjectSearcher permet d'extraire une collection d'objets de gestion,
// en fonction de la requête spécifiée lors de son instanciation par le paramètre ObjectQuery.
ManagementObjectSearcher managementObjectSearcher =
new ManagementObjectSearcher(managementScope, objectQuery);
// ManagementObjectCollection représente différentes collections d'objets de gestion extraits via WMI.
managementObjectCollection = managementObjectSearcher.Get();
// On parcours la collection
foreach
(ManagementObject managementObject
in wmiRemoteConnect.getManagementObjectCollection())
{
Ma connexion marche très bien puisque que lorsque j'enlève la clause Where de ma requête je récupère bien toutes les propriétés mais de tous les fichiers de ma machine. Donc c'est extrèment long!!! Mais si je laisse le Where j'obtiens un message d'erreur ==> "Demande non valide"
Ma conclusion est qu'il s'agit d'une erreur de syntaxe dans ma requete mais j'ai essayé pas mal de chose et toujours la meme erreur...
Si quelqu'un sait ou est le problème je suis preneur
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 6 juil. 2006 à 14:40
Tu récuperes tous les fichiers de ta machine comme tu faisais de la précédente facon mais si pas de partage sur le poste distant :
D:\\test.txt <=>
Demande non valide <==== c'est normal ...
a mon avis ce n'est pas la peine d'insister ... a moins que tu refasses le noyaux de la machine distante pour autorisé l'access ... enfin ... bon courage :)
SupaLou
Messages postés74Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention19 septembre 2006 6 juil. 2006 à 14:57
Bon alors déjà jme sent pas trop apte pour refaire le noyau de ma machine distante surtout que cest du windows...
Donc pour vérifier t'as théorie j'ai reformuler mon code pour qu'il fonctionne en local. Mais là j'ai toujours la même erreur. Si je laisse le "Where" ==> demande non valide, si je l'enlève je récupère les informations de tous mes fichiers.
Donc voilà apparement cela ne semble pas être un problème de partage réseau...
SupaLou
Messages postés74Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention19 septembre 2006 6 juil. 2006 à 15:19
Alors je continu péniblement mes recherches avant de m'attaquer au noyau de windows comme on me l'a conseillé lol
Donc j'ai modifié ma requête car pour moi, et d'après google également, l'erreur viendrai bien de là.
j'ai donc fait:
ObjectQuery objetQuery new ObjectQuery("Select * From Win32_Directory where Drive 'D:'");
Et là j'obtiens comme résultat toutes les informations concernant tous les fichiers se situant sur le lecteur D et non plus sur tout le disque ! ! Mine de rien c'est "un petit pas pour l'homme mais un bon de géant pour l'humanité"
Un gros je n'est plus qu'a mettre le fichier que je veux "étudier" sur une partition complètement vierge de mon serveur comme ceux ci je gagnerai en perf'!
Plus sérieusement ma grande question est:pourquoi losque je fais Where Name 'D:\\test.txt' cela plante et losque je fais where Drive 'D:' cela passe niquel ?????
Et ne me dite pas que c'est encore un de ces mystere de l'informatique!!
SupaLou
Messages postés74Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention19 septembre 2006 6 juil. 2006 à 16:31
bon bah je sent que je vais finir par faire comme tu me le disais bernie666, cest à dire partager les repertoires ou se trouve mes fichiers et faire comme ceci:
SupaLou
Messages postés74Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention19 septembre 2006 6 juil. 2006 à 16:52
purée mais j'hallucine je viens tout juste de trouver et je retourne sur ce forum pour vous donner la réponse et qu'est ce que je vois tu viens de me la donner!!!!
Effectivement tu as vu juste. J'ai donc corriger ma requete initial:
Select * From CIM_DataFile Where Name = 'D:\\test.txt'
par
Select * From CIM_DataFile Where Name = 'D:\\\\test.txt'
et cela marche niquel ! ! ! !!!!!!!! C'est trop bien ! ! ! !
Dommage pour moi que tu nbe soit pas venu plutôt sebmafate, j'aurai pas perdu ma journée à chercher, mais bon je m'en souviendrai.
En revanche pourrais tu m'expliquer pourquoi il faut mettre quatre "" à la suite??? Parce que là on a pas doublé mais quadruplé si je compte bien car à la base le vrai chemin est 'D:\test.txt'??
SupaLou
Messages postés74Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention19 septembre 2006 6 juil. 2006 à 16:59
heu petite précision quand même pour ceux que ca interesse. Il faut utiliser la classe CIM_DataFile et non pas la classe Win32_Directory comme je l'avais fait car cette dernière, comme son nom l'indique, permet de récupérer des infos que pour les repertoires et non pas pour les fichiers. Enfin c'est ce que j'en ai conclu car cela ne marchais pas avec elle...