Wmi+c#

Résolu
Signaler
Messages postés
225
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
21 mai 2009
-
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
-
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

Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
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 +
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
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]);
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
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.
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
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
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
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.
Messages postés
225
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
21 mai 2009

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
Messages postés
225
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
21 mai 2009

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
Messages postés
225
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
21 mai 2009

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
Messages postés
225
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
21 mai 2009

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é.
Messages postés
225
Date d'inscription
samedi 7 avril 2007
Statut
Membre
Dernière intervention
21 mai 2009

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