2009-09-24 6 views
1

Je suis en train d'utiliser ce code sur Windows 2000:erreur WMI avec une requête simple en C#

foreach (Process p in Process.GetProcesses()) 
{ 
    if (p.MainModule.FileName.EndsWith("calc.exe")) 
    { 
     using (ManagementObjectSearcher mos = 
        new ManagementObjectSearcher(
        "SELECT CommandLine,ExecutablePath 
         FROM Win32_Process WHERE ProcessId=" + p.Id.ToString())) 
     { 
      using (ManagementObjectCollection moc = mos.Get()) 
      { 
       foreach (ManagementObject mo in moc) 
       { 
        MessageBox.Show((string)mo["CommandLine"]); 
        return; 
       } 
      } 
     } 
    } 
} 

Cela fonctionne sous Windows XP et supérieur, mais échoue sur Windows 2000 avec une erreur « requête non valide ». According to MSDN, l'objet Win32_Process est pris en charge sur Windows 2000 et supérieur, donc je ne suis pas sûr de ce que je fais mal. Toute aide serait très appréciée.

Répondre

1

Désolé tout le monde. Je viens de réaliser que le champ "CommandLine" est seulement dans Windows XP et supérieur. Problème résolu.