2011-10-28 3 views
2

J'utilise ce petit bout de code pour intercepter les processus Java avec certains paramètres:Visual Studio 2010 SP1 casse les choses?

string query = "Select * From Win32_Process Where Name = 'javaw.exe'"; 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
ManagementObjectCollection processList = searcher.Get(); 

foreach (ManagementObject obj in processList) 
{ 
    string cmdLine = obj.GetPropertyValue("CommandLine").ToString(); 
    if (cmdLine.IndexOf("someapplication") != -1) 
    { 
     // ... 
    } 
} 

Ce code a fonctionné comme un charme juste il y a quelques jours quand je n'avais pas SP1 pour VS2010. Maintenant, il jette une exception de pointeur null sur la ligne 7. J'essaie de compiler pour .NET Framework 2.0.

Aide !? :/

+0

Qu'est-ce qui vous fait croire que Visual Studio 2010 SP1 est le coupable? Cela semble hautement improbable. –

+0

Cela a commencé à se produire après la mise à niveau vers SP1. Mais le problème n'était pas là, merci quand même. – dataviruset

Répondre

1

Il a probablement moins à voir avec SP1 et plus à faire avec une mise à jour Java. Vérifiez simplement null:

string query = "Select * From Win32_Process Where Name = 'javaw.exe'"; 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
ManagementObjectCollection processList = searcher.Get(); 

foreach (ManagementObject obj in processList) 
{ 
    object cmdLineValue = obj.GetPropertyValue("CommandLine"); 

    if(cmdLineValue != null) { 
     string cmdLine = cmdLineValue.ToString(); 
     if (cmdLine.IndexOf("someapplication") != -1) 
     { 
      // ... 
     } 
    } 
} 
+0

C'était ça. Je me sens un peu stupide ... Merci :) – dataviruset

2
if (cmdLine != null && cmdLine.IndexOf("someapplication") != -1) 
+0

Oui, mais ... laissez-moi le dire de cette façon. La variable cmdLine n'a jamais été nulle avant. – dataviruset

Questions connexes