프로젝트 클리너를 업데이트했습니다. 일단 닷넷으로 만들었습니다.

주요 업데이트 내용은 폴더를 정리할 수 있는 기능을 추가했고 파일, 폴더를 선택해서 정리가 가능합니다.

파일과 폴더 목록에는 와일드카드(*, ?) 사용이 가능하며 자세한 내용은 아래 msdn의 searchPattern 부분을 참고하면 될 것 같습니다.

또한 정리할 파일, 폴더의 목록과 선택여부를 data.xml파일에 저장하도록 했으며 xml 구조는 아래와 같습니다.

data.xml 파일이 없는 경우나 파일을 읽어오는 과정에서 오류가 발생하면 위의 스크린샷에 있는 설정이 기본 설정으로 적용되어서 사용이 가능합니다.
 

   
      *.ncb 
      *.opt 
      *.plg 
      *.obj 
      *.sbr 
      *.bsc 
      *.idb 
      *.pdb 
      *.ilk 
      *.exp 
      *.pch 
      *.res 
   
   
      DEBUG 
      RELEASE 
   

(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2008 / 2.0)

이전 버전 받기
최신 버전 받기

※ 정리할 목록의 기본값은 C언어쪽 프로젝트에 맞게 해놓은 목록입니다. 기본 목록을 가지고 C# 프로젝트에 사용하면 '*.RES' 항목 때문에 리소스 파일이 삭제되니 주의 바랍니다.
Posted by Gungume
,


H님의 의견을 반영해서 프로그램을 약간 업데이트했습니다.

업데이트 내용은 폴더의 날짜도 변경 가능하게 했습니다.
(H님의 다른 의견인 프로그램 자체에서 목록을 추가하는 기능은 C#의 기본 기능상으로는 폴더와 파일을 따로 추가해야되고 폴더가 다중선택이 안되는 문제로 일단 보류 상태입니다.)

목록에 폴더를 추가한 경우에는 일괄변경 하기전에 해당 폴더를 닫아주시기 바랍니다. 탐색기 등에서 폴더를 열어놓으면 윈도우에서 해당 폴더를 사용중이라는 오류가 나옵니다.
(폴더를 닫은 이후에도 같은 오류가 발생되면 조금 시간이 지나고 재시도하시면 됩니다.)

(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2008 sp1 / 2.0)

이전 버전 받기


Posted by Gungume
,
Posted by Gungume
,

파일날짜 일괄변경



파일날짜 일괄변경 프로그램을 약간 업데이트 했습니다.

우선 복구하기 기능을 추가했습니다. 복구하기 기능은 말 그대로 일괄변경하기 전의 파일이 가지고 있던 날짜로 복구하는 기능입니다. 프로그램을 종료하지 않는 이상 수차례의 일괄변경 후에도 복구가 가능합니다.

그리고 이전 버전의 경우 Windows 7에서 레이아웃이 깨지는 문제로 호환성을 위해서 프로그램의 크기 조절이 제한되었었는데 크기 조절에 제한이 없도록 변경하였습니다.

(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2010 beta1 / 2.0)

이전 버전 받기
최신 버전 받기


Posted by Gungume
,

주요 기능과 사용키는 버전2랑 동일합니다.

기존에 MFC에서 만들었던 것을 WIN32 API를 이용해서 만들었고, 불필요한 코드를 제거함으로써 기존 버전보다 조금 가벼워졌을꺼라 생각합니다.

참고로 종료방법은 트레이 아이콘에서 왼쪽 또는 오른쪽 마우스 버튼을 누르시면 종료할 수 있는 메뉴가 나옵니다.

사용 방법은 이전 버전의 글을 참고해주세요.

(사용언어 및 제작툴 : WIN32 API / VS2008)

이전 버전 받기
Posted by Gungume
,
RenamerUseFoldername.exe
제목 그대로 폴더명을 이용해서 파일명을 변경하는 프로그램입니다.

사용법은 우선 이름을 변경하고 싶은 파일이 있는 폴더를 프로그램으로 드래그 & 드롭하면 목록이 추가됩니다.

파일은 드래그&드롭이 되지 않고, 드래그 & 드롭한 폴더를 기준으로 모든 하위 폴더&파일을 순회하면서 목록에 추가됩니다.
(숨긴파일에 대해서는 추가되지 않습니다.)

기본적인 명명 규칙은 폴더명에 '_'를 붙힌 후 일련번호를 붙히는 형식으로 작동됩니다.
(확장자는 원본 그대로 사용하고, 일련번호 자릿수는 1~10자리로 공백에 대해서는 0으로 채워집니다.)

아래 캡쳐화면은 "C:\Users\Administrator\Desktop" 경로에 있는 "Picture" 폴더 하나를 드래그 & 드롭한 것입니다.



아래 캡쳐화면은 "상위 경로 포함" 옵션을 사용한 경우로 드래그 & 드롭시 폴더목록(이 경우 Picture 폴더)을 최상위로 해서 최종 파일까지의 경로를 '_'로 구분하면서 최종 파일명을 생성합니다.



참고로 "일련번호 자릿수", "상위 경로 포함" 옵션은 폴더&파일 추가 후에도 수시로 변경 가능합니다.

또한, 추가되는 파일의 확장자는 특별히 가리지는 않지만 사진파일 관리를 위해 만든 프로그램으로 사용법이 사진파일명 변경에 최적화 되어있습니다.

(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2010 beta1 / 2.0)


Posted by Gungume
,
#include <windows.h>
#include "resource.h"

BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{ 
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1),HWND_DESKTOP,DlgProc);
	return 0;
}

BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
			return TRUE;
		
		case WM_COMMAND:
			switch (LOWORD(wParam))
			{
				case IDOK:
				case IDCANCEL:
					EndDialog(hDlg,0);
					return TRUE;
			}
			break;
	}
	return FALSE;
}

Posted by Gungume
,
FileTimeChanger.exe
도깨비님의 요청에 의해서 파일날짜를 일괄변경하는 프로그램을 만들어 봤습니다. 파일의 '만든 날짜', '수정한 날짜', '액세스한 날짜'를 지정한 날짜 및 시간으로 일괄변경시켜주는 간단한 프로그램입니다.

리네이머에 기능을 추가하려다가 리네이머의 초기목적이 심플이였기 때문에 별도의 프로그램으로 만들었습니다.

사용법은 우선 일괄변경하고자 하는 파일들을 프로그램위로 끌어놓습니다. 그 다음에 일괄변경할 날짜 및 시간을 정해주고 '변경하기' 버튼을 클릭하시면 일괄변경됩니다.

'날짜만 적용' 버튼을 체크하시고 '변경하기' 버튼을 누르면 말 그대로 설정한 날짜 및 시간에서 날짜 부분만 적용하고 시간은 원래 파일의 시간을 그대로 사용합니다.

참고로 '변경하기' 버튼을 누르면 바로 적용되고 복구되지 않으니 사용에 주의해주시기 바랍니다.

또한 C#으로 만들었기 때문에 닷넷프레임워크 2.0 이상이 설치되있어야 실행이 가능합니다.
(닷넷 프레임워크 다운로드와 관련해서는 2008/06/28 - [C#] - Microsoft .NET Framework 다운로드 페이지...를 참고해주세요.)


아래는 프로그램의 캡쳐화면입니다~

파일 추가 후

날짜만 적용 후

날짜 및 시간 적용 후



참고로 'Windows 7'에서는 화면이 아래와 같습니다. 뭐가 문제인지 XP에서 코딩한 것을 7에서 실행하면 레이아웃이 깨져서 일부분만 수정해놨습니다.(혹시 XP같은 모양으로 실행되신다면 리플 달아주세요;;;)

Windows 7 실행모습


Source: https://github.com/gungume/FileTimeChanger/releases/tag/0.1
(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2008 / 2.0)

2009.07.25
Windows 7 최근 버전에서 레이아웃 깨지는 문제 발생 안함

최신 버전 받기


Posted by Gungume
,
C# 등의 닷넷계열의 언어를 이용해서 프로그래밍을 하면 어셈블리를 이용해 리버스 엔지니어링이 매우 쉽게 됩니다.

실제로 .NET Reflector 등을 사용해보면 어셈블리에서 원본코드와 거의 동일한 소스코드도 뽑아낼 수 있습니다.

이런 것을 방지하기 위한 것이 난독화인데 여러가지 방법 중에 간단한 것은 메소드명, 변수명 등을 a, b, c 등 의미없는 단어로 변경하는 방법입니다.

이런 난독화를 하는 프로그램이 몇개 있지만 Visual Studio를 설치하면 "Dotfuscator Community Edition"이 같이 설치되서 사용할 수 있습니다.(Community Edition으로 기능상에 제약이 있습니다.)


아래 예제에서는 별다른 옵션을 주지 않고 기본설정만을 이용한 간단한 사용법을 알아보겠습니다.

실행 방법은 Visual Studio의 도구메뉴에서 "Dotfuscator Community Edition"를 클릭하시면 됩니다.(시작메뉴에서도 실행은 가능하지만 Visual Studio가 실행이 되있어야 실행이 됩니다.)

프로그램을 실행하면 등록과 관련된 창이 뜨는데 일단 무시하시고, 실행이 완료되면 'Input' 탭에서 열기 아이콘을 이용해서 난독화를 수행할 파일을 선택해 줍니다.

파일 추가 후에 File메뉴나 툴바의 저장버튼을 이용해서 적당한 폴더에 프로젝트를 저장합니다.
(이때 설정한 폴더경로는 결과물이 저장될 경로이기도 합니다.)


그 다음에는 'Build' 탭으로 이동해서 'Build' 버튼을 클릭함으로써 난독화를 시작합니다.
(Directory 그룹박스 설정을 통해 결과물이 저장될 경로 변경가능합니다.)


Build가 완료되면 결과가 나옵니다. 뭐 대충 메소드명이나 필드명 등을 전체 몇개 중 몇개를 바꿨다는 내용으로 나오네요...


결과 확인을 위해 'Output' 탭으로 이동하면 아래 화면처럼 Program클래스, Main메소드, Sum메소드의 이름이 각각 'a'로 변경된 것을 알수 있습니다.
(실제 결과물은 위에서 프로젝트 저장 폴더로 지정한 경로에 가면 있습니다.)


다음은 위에서 작업한 파일의 원본 소스의 일부와 난독화한 파일을 .NET Reflector로 봤을 때 어떻게 변경됐는지를 보여줍니다.

Sum메소드명이 a로 변경되었고, Sum메소드의 매개변수인 var1, var2 각각이 A_0, A_1로 변경되었습니다.

예제에서는 소스코드가 단순해서 난독화 결과를 보고도 분석이 가능하지만 소스코드가 복잡했다면 의미없는 메소드명과 변수명등으로 도배가 된 코드를 분석하기는 어려울 것입니다.

▣ 소스코드
class Program
{
    static void Main(string[] args)
    {
        string str = "Test Message";
        Console.WriteLine(str);

        Console.WriteLine(Sum(10, 20));
    }

    static int Sum(int var1, int var2)
    {
        return var1 + var2;
    }
}

▣ .NET Reflector 결과화면


더 많은 기능이나 자세한 옵션 등은 아래 MSDN 페이지를 참조바랍니다.
Posted by Gungume
,
C#을 이용해서 웹페이지의 소스를 볼 수 있는 간단한 예제입니다.

웹페이지의 특성에 따라 인코딩 부분과 개행문자 부분은 변경해야 할 수도 있습니다.

using System.Net;
using System.IO;

WebRequest req = WebRequest.Create(url);
WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
string result = sr.ReadToEnd().Replace("\n", "\r\n");

res.Close();
sr.Close();

(사용언어 / 제작툴 / .Net Framework버전 : C# / VS2008 / 3.5)


Posted by Gungume
,