ManagementObject classe invalide
Bonjour !
Je développe actuellement une DLL qui me permettra de récupérer les informations du système comme le processeur, cartes graphiques, disques ...
Du coup, voici un petit exemple :
Code:
1 2 3 4
|
SysInfo si = new SysInfo();
Processor[] p = si.GetProcessor();
Graphic[] g = si.GetGraphics(); |
La classe Processor contient un duo variable/propriété, par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
private int numberOfCores;
private int numberOfLogicalProcessors;
public int NumberOfLogicalProcessors {
get {
return numberOfLogicalProcessors;
}
internal set {
numberOfLogicalProcessors = value;
}
}
public int NumberOfCores {
get {
return numberOfCores;
}
internal set {
numberOfCores = value;
}
} |
Pour 'remplir' la classe je procède comme ceci :
Code:
1 2 3 4 5 6 7 8
| public Graphic[] GetGraphics() {
query = "SELECT * FROM Win32_VideoController";
mos.Query.QueryString = query;
moc = mos.Get();
Load(Components.Graphics, moc);
return graphics;
} |
Et voici la méthode Load qui me pose problème :
Code:
1 2 3 4 5 6 7 8 9
|
private void Load(Components c, ManagementObjectCollection moc) {
foreach (ManagementObject mo in moc) {
int i = 0;
if (c == Components.Graphics) {
graphics = new Graphic[moc.Count];
Graphic g = new Graphic();
g.AdapterCompatibility = RequestString(mo, "adaptercompatibility");
// etc pour les autres composants |
Coté processeur, récupérer les informations ne pose aucun problème, sauf que quand je veux récupérer les informations sur les cartes graphiques via la query "SELECT * FROM Win32_VideoController", j'ai une exception au niveau du commencement du foreach :
Citation:
Une exception non gérée du type 'System.Management.ManagementException' s'est produite dans System.Management.dll
Informations supplémentaires : Classe non valide
Il y a à peine 2 heures de cela, et depuis le début du projet, je n'avais absolument aucun problème, pas d'exception de ce coté-ci ... Du coup je me sens un peu perdu ... J'avais déjà eu cette erreur lorsque j'avais fait une faute dans la requête, mais là cela m'a l'air bon ... http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Désolé s'il y peut-être un peu beaucoup de code, je voulais être clair !
Merci par avance ! :)