2011-10-28 1 views
2

내가 특정 매개 변수와 자바 프로세스를 잡기 위해이 작은 코드를 사용하고 있습니다 : 내가 VS2010에 대한 SP1을 가지고 있지 않은 경우Visual Studio 2010 SP1에서 문제가 발생합니까?

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) 
    { 
     // ... 
    } 
} 

이 코드는 일 단지 몇 전에 마법처럼 일했다. 이제 7 번 줄에 널 포인터 예외가 발생합니다. .NET Framework 2.0 용으로 컴파일하려고합니다.

Help !? :/

+0

Visual Studio 2010 SP1이 무엇이라고 생각합니까? 그럴 가능성은 희박합니다. –

+0

SP1로 업그레이드 한 후이 작업이 시작되었습니다. 그러나 문제는 거기에 없었습니다. 어쨌든 고마워요. – dataviruset

답변

1

Java 업데이트의 경우 SP1과 더 관련이 없습니다. 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

이것은 그 것이다. 나는 바보 같은 느낌이 든다. 고마워. :) – dataviruset

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

그래,하지만 ... 내가 이렇게하면 좋겠어. 이전에는 cmdLine 변수가 null이 아니 었습니다. – dataviruset