졸업작품에서 사용했던 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
,