졸업작품에서 사용했던 WMI를 이용한 몇가지 기능을 라이브러리화 시켜봤습니다.

총 4개의 클래스중 ProcessInfo는 단순한 구조체 용도이고 PowerManager, ProcessManager, RegistryManager 이렇게 3개의 클래스가 실제 WMI를 이용한 클래스이며 각각 아래와 같은 역할을 합니다.
PowerManager : 로그오프, 재부팅, 종료 등의 기능 수행
ProcessManager : 프로세스 목록을 얻고, 핸들번호를 이용 프로세스 종료 기능 수행
RegistryManager : 레지스트리 수정을 이용한 윈도우 최적화 기능 수행
모든 메소드를 정적메소드로 구현했기 때문에 별다른 객체 생성없이 사용이 가능하며 로컬컴퓨터가 아닌 원격컴퓨터를 대상으로 사용한다고 가정하에 구현했습니다.
자주 쓰이는 매개변수로는 IPAddress, Username, Password 정도가 있는데 각각의 의미는 아래와 같습니다.
IPAddress : 원격지 컴퓨터의 IP주소(동일 작업그룹내에서는 컴퓨터이름으로 사용가능)
Username : WMI를 실행시킬 수 있는 권한을 가진 계정의 아이디
Password : WMI를 실행시킬 수 있는 권한을 가진 계정의 비밀번호

그리고 RegistryManager클래스 사용시 매개변수로 쓰일 RegistryManager.OptimizeList 열거체는 대략 아래와 같이 사용하시면 되고, 자세한 것은 KAISTIZEN님의 "[C#] Flag 연산 총정리"을 참조하시기 바랍니다.
// 초기 값으로 None를 선택해 줌
RegistryManager.OptimizeList optimizeList;
optimizeList = RegistryManager.OptimizeList.None;

// 이후 ^= 연산을 통해서 사용하고 싶은 항목을 선택해줍니다.
// ^= 연산을 한번씩 수행할 때 마다 결과가 반전됩니다.
optimizeList ^= Common.OptimizeList.Item1;
optimizeList ^= Common.OptimizeList.Item3;
optimizeList ^= Common.OptimizeList.Item7;

실제 사용은 WMI.dll, WMI.xml 파일을 같은 곳에 두고 참조를 해서 사용하시면 되고, 나머지는 인텔리센스나 도움말 파일을 보시면 별다른 어려움 없이 사용가능할 것 같습니다.

(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2008 / 2.0)
Posted by Gungume
,
이번에 졸업작품으로 만든 프로그램으로 C#으로 만들었다.

주제가 좀 평범해서 몇가지 경우에 대해서는 소켓통신 대신에 WMI를 사용했다는 것이 조금 다를뿐이다...

원래는 기본기능 외에 부가적인 기능과 PC재배치 등에 대한 기능을 좀더 유동적으로 만들려고 했는데 예정에 없던 산업체현장실습과 교육 등으로 인해 실제 개발에 투자한 시간이 몇주밖에 되지않아 기본기능만 구현했다;;;

나름 핵심기능은 WMI를 이용해서 PC의 전원 및 프로세스, 레지스트리 관리정도와 소켓통신을 이용한 원격제어 등이다...

아래는 전체시스템 구성도로 중앙서버(=메인서버)와 클라이언트(관리할 PC들)로 구성된다.

관리를 하기위한 기능은 대부분 서버에서 이루어지고, 클라이언트는 처음 실행시 학번을 통해서 로그인을 하고 이후에는 백그라운드로 실행되면서 서버에서 요청한 정보를 전송해주는 기능정도만 한다..

- 전체시스템 구성도 -
전체시스템 구성도



- 서버 -




- 클라이언트 -



- 프로세스 정보 -
WMI를 이용해서 원격지의 프로세스 정보를 얻어옴
왼쪽은 구현한 프로그램에서 얻어온 프로세스 정보이고 오른쪽은 윈도우의 작업관리자에서 얻어온 프로세스 정보
프로그램상에서 선택한 프로세스에 대한 Kill 가능~



- 원격탐색기 -
소켓통신을 이용해서 원격지의 폴더 & 파일 정보를 얻어옴
파일전송 기능을 넣고 싶었지만 시간이 부족했다;;;
역시 왼쪽은 구현한 프로그램, 오른쪽은 윈도우의 탐색기



- 화면캡쳐 -
소켓통신을 이용해서 원격컴퓨터의 화면을 캡쳐해옴
버튼 클릭에 따른 캡쳐 및 설정된 타이머간격으로 캡쳐가능
캡쳐된 화면 JPG, BMP, PNG 파일로 저장가능



- 윈도우최적화 -
WMI를 사용 원격컴퓨터의 레지스트리를 변경해서 윈도우최적화



- 원격제어 -
소켓통신을 이용한 원격제어
화면캡쳐를 이용한 원격제어
기본적인 키보드 & 마우스제어 가능

Posted by Gungume
,