Wmi+c#

Résolu
ahlemlo Messages postés 225 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 21 mai 2009 - 31 mai 2007 à 09:04
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 - 4 juin 2007 à 16:06
bonjour à tous,
j'ai utilisé la méthode WMI pour afficher les informations d'un pc.je veux que ces information seront inserer dans ma base comment faire ça?
pouvez vous m'aider.
merci.

10 réponses

t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
1 juin 2007 à 15:18
Pour travailler avec une bdd, il faut établir un connexion, ensuite avec un SqlDataAdapterrenseigner les requêtes Select, Insert, ...
Après au lieu d'ajouter la valeur à la textBox, tu utilise ton DataAdapter pour insérer ta valeur dans ta bdd. Lis les articles et les exemples sur la msdn (cf les liens) et tu auras ta solution. Depuis combien de temps, code tu en c#?

Sinon, petit rappel de points déjà expliqués :
    > Certaine propriétés ne sont pas forcément renseignées, donc tu peux obtenir la valeur null, et dans ce cas c'est le drame car tous tes casts en string vont lever des exceptions.
    > Modifie ta requête en SELECT quelquechose FROM Win32_Classe plutôt que d'utiliser * et de tester les propriétés par la suite, ton code sera plus rapide, plus lisible, plus propre.
    > Dans ton programme de test (celui au dessus), pourquoi utilise tu une TextBox avec des retour/chariot au lieu d'une ListBox, ce serait beaucoup plus simple, plus esthétique, plus propre.
    > Utilise un StringBuilder ou la méthode format de l'objet String pour concaténer les chaines de caractères, au lieu de l'opérateur +
3
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
4 juin 2007 à 11:13
Salut, "on plus avec  ListBox ne marche pas on sait pas pourquoi" n'est pas suffisant pour que l'on puisse t'aider! Est ce qu'une exception est levée ? Si oui laquelle ?

Mon idée était de remplacer :
textBox3.Text += aPropertyData3.Name + " : " + System.Convert.ToString(aManagementObject3[aPropertyData3.Name]) + "\r\n";

par

maListBox.Items.Add(String.Format("{0} : {1}", aPropertyData3.Name, aManagementObject3[aPropertyData3.Name]);
3
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
4 juin 2007 à 13:20
La requête Insert doit évidemment être faite à la place de l'ajout dans la ListBox, regarde sur la msdn pour la documentation sur un SqlDataAdapter.
3
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
4 juin 2007 à 16:06
Lis tu les réponses que l'on te donne? Tout dépend de la structure de ta table et de ta bd. Comme je ne les connais pas, je peux pas te donner de bout de code. Il faut
<li>que tu créé une connexion à ta bd. Regarde dans l'onglet "Server explorer" pour créer automatiquement une connexion
</li><li>que tu créé une SqlCommand de type Insert (du style "INSERT INTO maTable (maVal) VALUES @maVal")
</li><li>que tu l'associe à la propriété InsertCommand de ton objet SqlDataAdapter.</li><li>que tu utilise la méthode Update de ton objet SqlDataAdapter avec comme paramètres les valeurs obtenues via ta requête wmi.</li>Je pnse qu'aveec tout ça tu devrais t'en sortir. Je me trompe peut être mais j'ai l'impression que tu ne connais pas bien le c# ?
PS : on ne peut pas faire ton projet à ta place, en tout cas je crois pas que ce soit le but de ce forum
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
t_barbillon Messages postés 341 Date d'inscription mercredi 8 juin 2005 Statut Membre Dernière intervention 10 février 2009 2
31 mai 2007 à 11:56
Salut, ce n'est pas la peine de poster plusieurs fois pour une même question (cf ici et ) ; il faut aussi être plus précis car la question est ultra vaste. Tu peux déjà jeter un coup d'oeuil ici pour le wmi et pour la gestion de la bdd ; ça devrait te donner des pistes.
0
ahlemlo Messages postés 225 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 21 mai 2009
1 juin 2007 à 13:54
bonjour,
voici le code qui permet d'fficher les information d'un carte mémoire,systéme d'exploitation,carte réseau et les logiciel installé.
je veux inserer ces information dans la base de donné sql server2005 qui contient ces tables (table carte mémoire,table systéme d'exploitation,table carte réseau et table logiciel installé ).
ces tables sont initialement vide.
quelle est le code qui permet l'insertion de ces information?
 où je peux faire le code d'insertion?
//voici le code:
 ManagementScope aManagementScope = new ManagementScope("\\\\Localhost\\root\\cimv2");
                //La classe ObjectQuery représente une requête de gestion qui retourne des instances ou des classes
                System.Management.ObjectQuery aObjectQuery = new System.Management.ObjectQuery("Select * from Win32_NetworkAdapter");
                System.Management.ObjectQuery aObjectQuery1 = new System.Management.ObjectQuery("Select * from Win32_Product");
                System.Management.ObjectQuery aObjectQuery2 = new System.Management.ObjectQuery("Select * from Win32_PhysicalMemory");
                System.Management.ObjectQuery aObjectQuery3 = new System.Management.ObjectQuery("select * from Win32_OperatingSystem");





                //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 ou directement par une string si l'on " code en dur ".
                ManagementObjectSearcher aManagementObjectSearcher = new ManagementObjectSearcher(aManagementScope, aObjectQuery);
                ManagementObjectSearcher aManagementObjectSearcher1 = new ManagementObjectSearcher(aManagementScope, aObjectQuery1);
                ManagementObjectSearcher aManagementObjectSearcher2 = new ManagementObjectSearcher(aManagementScope, aObjectQuery2);
                ManagementObjectSearcher aManagementObjectSearcher3 = new ManagementObjectSearcher(aManagementScope, aObjectQuery3);



                //ManagementObjectCollection représente différentes collections d'objets de gestion extraits via WMI.
                ManagementObjectCollection aManagementObjectCollection = aManagementObjectSearcher.Get();
                ManagementObjectCollection aManagementObjectCollection1 = aManagementObjectSearcher1.Get();
                ManagementObjectCollection aManagementObjectCollection2 = aManagementObjectSearcher2.Get();
                ManagementObjectCollection aManagementObjectCollection3 = aManagementObjectSearcher3.Get();



                //ManagementObject est un objet de gestion de données.
                textBox3.Text += "caractéristique des cartes réseaux:" + "\r\n";
                foreach (ManagementObject aManagementObject in aManagementObjectCollection)
                {
                    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 =="DeviceID" || aPropertyData.Name == "AdapterType" || aPropertyData.Name == "Description" || aPropertyData.Name == "MACAddress" || aPropertyData.Name == "NetConnectionID" || aPropertyData.Name == "NetworkAddresses")



                            textBox3.Text += aPropertyData.Name + " : " + System.Convert.ToString(aManagementObject[aPropertyData.Name]) + "\r\n";



//dans cette partie je veux faire l'insertion de ces informations dans la base




 




 



                    }
                }





                //ManagementObject est un objet de gestion de données.
                textBox3.Text += "caractéristique des logicielles installées dans la machine:" + "\r\n";
                foreach (ManagementObject aManagementObject1 in aManagementObjectCollection1)
                {
                    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 aPropertyData1 in aManagementObject1.Properties)
                    {                       // if (aPropertyData.Name "AdapterType" || aPropertyData.Name "DeviceID" || aPropertyData.Name == "Description" || aPropertyData.Name == "MACAddress" || aPropertyData.Name == "NetworkAddresses" || aPropertyData.Name == "NetConnectionID" || aPropertyData.Name == "SerialNumber")



                        textBox3.Text += aPropertyData1.Name + " : " + System.Convert.ToString(aManagementObject1[aPropertyData1.Name]) + "\r\n";
                    }
                }



                textBox3.Text += "caractéristiques du carte mémoire:" + "\r\n";
                foreach (ManagementObject aManagementObject2 in aManagementObjectCollection2)
                {
                    //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 aPropertyData2 in aManagementObject2.Properties)
                    {                        //if (aPropertyData2.Name "Capacity" || aPropertyData2.Name "Caption" || aPropertyData2.Name == "Description" || aPropertyData2.Name == "SerialNumber")



                            textBox3.Text += aPropertyData2.Name + " : " + System.Convert.ToString(aManagementObject2[aPropertyData2.Name]) + "\r\n";
                    }
                }





                textBox3.Text += "caractéristique du systeme d'exploitation:" + "\r\n";
                foreach (ManagementObject aManagementObject3 in aManagementObjectCollection3)
                {
                    //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 aPropertyData3 in aManagementObject3.Properties)
                    {                        if (aPropertyData3.Name "Caption" || aPropertyData3.Name "CSDVersion" || aPropertyData3.Name == "SerialNumber" || aPropertyData3.Name == "Status" || aPropertyData3.Name == "Version")
                           
                            textBox3.Text += aPropertyData3.Name + " : " + System.Convert.ToString(aManagementObject3[aPropertyData3.Name]) + "\r\n";
                    }
                }




merci pour tous
0
ahlemlo Messages postés 225 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 21 mai 2009
4 juin 2007 à 08:30
bonjour,
merci bien de votre données.
mais on a pas pu faire ça?
pouvez vous nous aider svp?
on plus avec  ListBox ne marche pas on sait pas pourquoi?
merci pour tous
0
ahlemlo Messages postés 225 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 21 mai 2009
4 juin 2007 à 11:20
quand j'utilise listbox.rien ne s'affiche (il n'y a aucune résultat) j'espert que vous m'avais compris et merci bien.
et maintenant je vais esseyer ce code que vous m'a donner
0
ahlemlo Messages postés 225 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 21 mai 2009
4 juin 2007 à 11:40
merci c'est bien marché mais juste il nous reste comment ces information afficher dans la listbox on les insert dans ma base de donnée.
on a vue le cours que vous m'avais donner mais on a pas compris comment faire?
ou on faire la requette insert et comment?
pouvez vous m'aider?
merci tréééééééééééééés bien de votre aide
et vraiment désolé.
0
ahlemlo Messages postés 225 Date d'inscription samedi 7 avril 2007 Statut Membre Dernière intervention 21 mai 2009
4 juin 2007 à 15:31
je veux  afficher dans la listbox et inserer dans la base au même temps.
qu'est ce que je peux faire avec sqldata adapter?
merci
0