J'ai utilisé l'outil Mgmtclassgen.exe pour pouvoir générer une classe correspondante à l'objet Win32_OperatingSystem des WMI. J'ai fait cette action sur Windows Vista et dessus tout fonctionne correctement. J'accède nottement à la propriété LastBootUpTime sans aucun problème grâce au code suivant, généré par ce même outil :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
[Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsLastBootUpTimeNull {
            get {
                if ((curObj["LastBootUpTime"] == null)) {
                    return true;
                }
                else {
                    return false;
                }
            }
        }
 
[Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [Description("Heure du dernier démarrage du système d\'exploitation")]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public System.DateTime LastBootUpTime {
            get {
                if ((curObj["LastBootUpTime"] != null)) {
                    return ToDateTime(((string)(curObj["LastBootUpTime"])));
                }
                else {
                    return System.DateTime.MinValue;
                }
            }
        }
Maintenant sur un système équipé de Windows XP SP2 il y a un crash sur la ligne suivant le "get{" de "IsLastBootUpTimeNull " avec comme méssage :
System.Management.ManagementException: Chemin de l'objet non valide
à System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
à System.Management.ManagementObject.Initialize(Boolean getObject)
à System.Management.ManagementBaseObject.get_Properties()
à System.Management.ManagementBaseObject.GetPropertyValue(String propertyName)
à System.Management.ManagementBaseObject.get_Item(String propertyName)
à ROOT.CIMV2.Win32.Win32OperatingSystem.get_IsLastBootUpTimeNull() dans ...
Quelqu'un connaitrait-il la raison de ce crash ?

Merci d'avance