프로젝트 클리너 - v0.2에 사용했던 MultipleSearchPattern을 라이브러리화 시켰습니다.

사용법은 dll, xml 파일을 같은 경로에 두고 프로젝트에서 참조시키면 되고, 모두 정적메소드로 만들었기 때문에 객체 생성없이 바로 사용하면 됩니다.

닷넷의 기본 DirectoryInfo.GetFiles(), DirectoryInfo.GetDirectories() 메소드의 searchPattern은 단일 조건밖에 되지 않는데 이것을 개선해서 여러 조건을 사용가능하게 해줍니다.

기본적인 사용법은 MS의 GetFiles(), GetDirectories() 메소드에 매개변수를 약간 변형시켰습니다.


일단 두 메소드 모두 첫번째 매개변수는 결과를 받을 배열로서 out 키워드를 이용해서 넘겨주면 메소드 실행 후 결과를 받을 수 있습니다. 기본적으로 string배열로 결과를 받을 수 있고, 각 메소드에 맞게 DirectoryInfo, FileInfo 배열로 결과를 받을 수 있습니다.

두번째 매개변수는 검색을 할 경로를 지정합니다. 단순히 하나의 경로에 대해서 처리할 때는 string형에 경로를 저장해서 넘겨주면 되고 복수의 경로에 대해서는 string배열로 넘겨주면 됩니다.

세번째, 네번째 매개변수는 searchPattern과 관련된 것으로 기본 문법은 MS의 메소드와 같지만 복수개의 조건을 지정하고 싶으면 char형의 구분자를 통해서 여러개의 조건을 지정할 수 있고 이떄 사용된 구분자는 네번째 매개변수로 넘겨줍니다.
(searchPattern의 자세한 내용은 http://msdn.microsoft.com/ko-kr/library/8he88b63.aspx 를 참고하세요.)

마지막으로 SearchOption은 검색경로에 대해서 하위 경로 포함여부를 정하는 것으로 MS 메소드에 사용하는 SearchOption을 그대로 사용합니다.

실제 사용 예는 아래와 같고 ';'을 구분자로 사용한 예입니다.

FileInfo[] result = null;
string path = @"C:\";
string multipleSearchPattern = "*.jpg;*.bmp;*.png";

MultipleSearchPattern.GetFiles(out result, path, multipleSearchPattern, ';', SearchOption.AllDirectories);
(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2008 / 2.0)

Posted by Gungume
,

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