2011. 9. 28. 11:51

닷넷에서 ipconfig 정보를 가져오는 방법은 몇가지 있긴합니다만 눈에 떡하니 보이는 명령프롬프트에서 ipconfig한 내용을 가져오는 방법을 알려 드리겠습니다.


요 화면이죠.


1. Process로 ipconfig 실행하기

방법은 간단합니다.
명령프롬프트에서 ipconfig를 하면 "c:\windows\system32\ipconfig.exe" 가 실행 됩니다.
그러니 우리는 Process를 이용하여 "c:\windows\system32\ipconfig.exe"를 실행하면 됩니다.

ProcessStartInfo psInfo = new ProcessStartInfo();

psInfo.FileName = @"c:\windows\system32\ipconfig.exe";	//실행파일
psInfo.UseShellExecute = false;				//쉘 기능을 사용 하지 않는다.
psInfo.RedirectStandardOutput = true;			//표준 출력을 리다이렉트

Process p = Process.Start(psInfo);			//어플리케이션 실행
string output = p.StandardOutput.ReadToEnd();		//표준 출력 읽어 잡기

output = output.Replace("\r\r\n", "\n");			//줄바꿈 코드의 수정
OutputLog(output);


이렇게 하면 ipconfig한 내용을 가져올수 있습니다.

2.창열지 않기
그런데 화면이 깜빡거리는 것을 느끼실수 있습니다.
이것은 명령프롬프트가 잠시 표시되기 때문입니다.
이 현상을 없애려면 CreateNoWindow속성을 true로 주면 됩니다.

ProcessStartInfo psInfo = new ProcessStartInfo();

psInfo.FileName = @"c:\windows\system32\ipconfig.exe";	//실행파일
psInfo.CreateNoWindow = true;				//윈도우를 열지 않는다.
psInfo.UseShellExecute = false;				//쉘 기능을 사용 하지 않는다.
psInfo.RedirectStandardOutput = true;			//표준 출력을 리다이렉트

Process p = Process.Start(psInfo);			//어플리케이션 실행
string output = p.StandardOutput.ReadToEnd();		//표준 출력 읽어 잡기

output = output.Replace("\r\r\n", "\n");			//줄바꿈 코드의 수정
OutputLog(output);


3.옵션 넣기

ipconfig의 옵션은?
ㅎㅎㅎ

ProcessStartInfo에서 옵션을 넣기 위해선 Arguments속성을 이용합니다.

ProcessStartInfo psInfo = new ProcessStartInfo();

psInfo.FileName = @"c:\windows\system32\ipconfig.exe";	//실행파일
psInfo.Arguments = "/all";				//옵션
psInfo.CreateNoWindow = true;				//윈도우를 열지 않는다.
psInfo.UseShellExecute = false;				//쉘 기능을 사용 하지 않는다.
psInfo.RedirectStandardOutput = true;			//표준 출력을 리다이렉트

Process p = Process.Start(psInfo);			//어플리케이션 실행
string output = p.StandardOutput.ReadToEnd();		//표준 출력 읽어 잡기

output = output.Replace("\r\r\n", "\n");			//줄바꿈 코드의 수정
OutputLog(output);


이렇게 하면 "ipconfig /all"한 정보를 불러 올수 있습니다.




이렇게 불러온 정보는 문자열이라 직접 원하는 정보를 추출해야 합니다 ㅡ.-;;;
원하는 정보찾기가 힘들때만 사용하는 것이 좋습니다 ㅎㅎㅎ