간만에 백신을 돌려보았더니
notepad2를 실행하는 부분의 레지스트리가 바이러스로 검출이 되도록 패턴이 수정되었다.


...
어떻게 피해가야 하나 -ㅁ-?
신고
Posted by 구차니

댓글을 달아 주세요

  1. 말도안돼!!!!!!!!!! 전 PC그린 안쓸래요ㅠㅠ
    아무래도 3.1.21 정식버전 나오면 큰 삽을 준비해야 할듯합니다ㅋ

    2009.05.11 13:03 신고 [ ADDR : EDIT/ DEL : REPLY ]

파일방2009.01.16 11:34
자세한 내용은 http://mr-ok.com/tc/entry/notepad2-ultimatum 을 참조 하세요


신고

'파일방' 카테고리의 다른 글

TeamViewer  (0) 2009.08.03
UFO:AI 임시 번역본  (0) 2009.03.07
Dual time clock  (0) 2009.02.04
공개 시리얼 프로그램(터미널) - free terminal program(RS-232)  (6) 2009.01.21
Notepad2 개궁극의 버전 - 트래픽 분산용  (4) 2009.01.16
POTO TV CSE 드라이버(회색)  (20) 2008.11.26
Posted by 구차니
TAG Notepad2

댓글을 달아 주세요

  1. 아.. 올려놓으셧군요. 지금 봤습니다. 배려 고맙습니다^o^

    2009.01.16 14:16 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 다른버전도 올릴까요? 아니면 데이터용 티스토리 쓰시도록 하나 분양을 해드릴까요? ㅎ

      2009.01.16 15:11 신고 [ ADDR : EDIT/ DEL ]
  2. 사실 한글화 프로그램용 팀블로그가 있긴해요. 보통은 거기다 올려놓는데 이번에 좀 경솔했네요. 일단 구차니님 게시물의 링크로 끌어놨는데 확실히 효과가 있는것 같아요. 정확히는 기억 안나는데 위 댓글올린 시점에서 5백몇십메가였는데 지금도 5백몇십메가인걸 보니 이게 원인 맞는듯 합니다^^ 감사해요

    2009.01.16 15:33 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 아하하 죄송해요 ^^; 여기저기 notepad2를 광고하고 다녀서 말이죠 ㅋㅋ

      2009.01.16 15:42 신고 [ ADDR : EDIT/ DEL ]

메뉴상에서 notepad.exe를 notepad2.exe로 대체 할 것인지에 대한 메뉴를 추가 하였다.
일단 사용한 함수는 RegSetValueEx 이다.

 
 LONG WINAPI RegSetValueEx(
   __in        HKEY hKey,
   __in_opt    LPCTSTR lpValueName,
   __reserved  DWORD Reserved,
   __in        DWORD dwType,
   __in_opt    const BYTE *lpData,
   __in        DWORD cbData
 );

기존에는 RegSetValue를 사용했었는데, 이 녀석은 Key , SubKey에 대해서 만 등록을 할 수 있지,
Value는 등록하지 못하므로 Value를 등록 할 수 있는 RegSetValueEx를 사용하게 되었다.

 RegSetValueExW(key1, L"Debugger", 0, REG_SZ, cmd, len * 2);
데이터는 위의 prototype를 보면 알겠지만,
"키,value name, 0, 변수 타입, value, 길이" 의 순서인데 reserved 값으로 0이 고정 되어 있다.

notepad2 프로젝트는 unicode로 되어 있으므로, 이에 대응하기 위해서 RegSetValueExW로 함수를 사용하였는데,
버그인지는 모르겠지만, len 부분에서 2배를 해주어야 만 제대로 value가 들어 가는 문제가 있었다.
2배라고 함은 unicode는 2byte 문자열이므로 이를 맞추어 주기 위해 2배가 된 것 같기는 하지만,
문자열이 unicode인데 길이만 따로 ascii 식으로 세어 준다는 것은 무언가의 문제가 있는 것으로 보인다.

그리고 prototype 상으로는 BYTE 타입의 문자열을 원하므로 Unicode 함수임에도 불구하고 warning을 출력한다.
--------------------Configuration: Notepad2 - Win32 Release--------------------
Compiling...
Notepad2.c
C:\cvsdown\np2src_VC6\src\Notepad2.c(2994) : warning C4133: 'function' : incompatible types - from 'unsigned short [264]' to 'const unsigned char *'
Linking...

Notepad2.exe - 0 error(s), 1 warning(s)


[출처 : http://msdn.microsoft.com/en-us/library/ms724923(VS.85).aspx]
신고
Posted by 구차니
TAG Notepad2

댓글을 달아 주세요

  1. 뭔가 복잡해 보이는데 이전에 추가했던 메뉴랑 방법이 다른건가요??
    암튼 잘 되리라 믿슙니다. 구차니님 최~고!

    2009.01.04 23:37 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 외관상으로는 하나의 메뉴가 추가 되었을 뿐입니다 ^^
      일단 BLUE'nLIVE 님께 메일로 보내 드렸으니 곧 소식이 있으시겠지요. 혹시 불편하시다면 WinMerge 등의 비교 프로그램으로 직접 변경하시도록 소스를 직접 보내 드릴테니 메일을 부탁드리겠습니다.

      2009.01.05 00:13 신고 [ ADDR : EDIT/ DEL ]
    • 덕분에 기능 하나가 추가되었네요. 설치정보 파일은 제외하고 포스팅 했습니다^^ 고생하셨어요~

      2009.01.06 21:30 신고 [ ADDR : EDIT/ DEL ]
    • 수고 하셨습니다 ^^

      2009.01.06 21:49 신고 [ ADDR : EDIT/ DEL ]
  2. 지나가는 이

    수정해주신 노트패드2 열심히 쓰고 있답니다.
    공부도 할겸 64비트로 컴파일해보고 싶은데
    소스를 좀 얻을 수 있을까요?

    제 메일주소는 ammam41@gmail.com입니다.

    2009.01.09 11:39 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 제가 한 부분은 32비트용 VC++ 6.0 프로젝트로 변환된 소스에 레지스트리 부분만 추가 한거라서, 그 프로젝트 전체를 받으실려면 저 보다는 BLUE'nLIVE 님께 허락을 받으시는게 좋다고 생각을 합니다 ^^

      번거로우시더라도 http://bluenlive.net/ 에 가셔서 직접 부탁해보시기 바랍니다.

      2009.01.09 11:53 신고 [ ADDR : EDIT/ DEL ]

메모장을 대체 하기 위한 프로그램으로 notepad2 와 notepad++가 있다.

1. notepad2

2. notepad++


notepad++을 실행 만 시켜 봤는데, 상당히 화려하고, 먼가 기능이 매우 많아 보인다.
단순하게 용량을 비교 하자면 sourceforge notepad++ 프로젝트 에서 받은
최신 버전의 용량은 3.23MB (3,397,310 바이트)
그리고 압축이 해제된(ANSI/UNICODE 버전 두가지 포함)
디렉토리의 용량은 10.7MB (11,295,036 바이트) 이다.
그리고 실행하는데 시간이 약간 걸린다. 내 시스템에서 화면 나오는데 대략 1초 미만 정도로 추정된다.
[notepad++ 공식 : http://notepad-plus.sourceforge.net/uk/site.htm]

하지만 notepad2는
누르자 마자 실행이 되고, 용량은 한글판 최신 버전 기준 300KB 미만이다.
용량/속도 대비로는 notepad2가 상당히 우세하나, 눈에 보이는 기능이라던가 글꼴은 notepad++가 낫다.

메모장 대체라는 가벼운 용도라면 notepad2를
ultraedit 등의 에디터를 대체하는 용도라면 notepad++를 하는 것이 나을 듯 하다.
[notepad2 공식 : http://www.flos-freeware.ch/notepad2.html]
신고

'프로그램 사용 > notepad++' 카테고리의 다른 글

notepad++ 접은 라인 빼고 복사하기  (0) 2016.10.25
notepad++ timestamp 찍기  (0) 2016.08.10
notepad++ 플러그인(ctags/vi)  (0) 2015.01.08
notepad2 와 notepad++  (14) 2008.12.30
Posted by 구차니

댓글을 달아 주세요

  1. 오.. 한번 써 봐야 겠네요..
    저도 노트패드를 많이 사용하는데, 제게는 notepad2가 좋겠네요..

    2008.12.30 16:03 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • notepad2는 이번에 수정한 사항들이 있어서 정식 빌드를 okto님에게서 기다리는 중이랍니다. 자세한 내용은 마지막 바턴을 받으신 okto님의 블로그에서 기다려 보시기 바랍니다 ^^

      okto님의 블로그[http://mr-ok.com/tc]
      BLUE'nLIVE님의 블로그 [http://bluenlive.net/]

      2008.12.30 16:28 신고 [ ADDR : EDIT/ DEL ]
  2. 비밀댓글입니다

    2008.12.30 20:28 [ ADDR : EDIT/ DEL : REPLY ]
    • 산새교로 치도록 노력해야 겠습니다 ㅋㅋ 이상하게 tistory가 오타를 자꾸만 tisotry로 치더라구요 ㅠ.ㅠ try가 좋아 하는 단어도 아닌데 말이죠 ㅠ.ㅠ

      2008.12.31 00:25 신고 [ ADDR : EDIT/ DEL ]
  3. 자쟌~~ 고생 많으셨습니다. 메뉴도 한글로 나오고 아주 좋네요^^
    오늘이 bluenlive님 결혼 기념일이더군요. 바쁘신^^ 와중에도 보내주셔서 한글작업을 마칠 수 있었습니다.
    두분께 정말 감사드려요~

    2008.12.30 22:23 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • UPX 가르쳐 주셔서 감사합니다 ㅋㅋ
      한글화 완료인가요? 수고하셨습니다 >_<

      2008.12.31 00:26 신고 [ ADDR : EDIT/ DEL ]
  4. notepad2 작업 중 갑자기 죽는 버그는 수정되었나요?
    전 그것때문에 사용을 포기했었는데, pspad 도 그렇고.. notepad++ 도 가끔 그러긴합니다만, 앞의 두 프로그램과 비교하면 notepad2 >> pspad > notepad++ 라.. ㅎ

    2008.12.31 01:43 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 편집용도로 쓰는게 아니라 저는 뷰어로 쓰다 보니
      이번에 context-menu 연결 작업을 하면서 사용하기 시작해서 아직은 그렇게 죽는 현상을 발견하지 못했답니다. 아마도 notepad2나 notepad++ 이나 둘다 Scintilla를 기반으로 작성이 되어서 둘다 불안정하다면 Scintilla자체 버그가 아닐까 생각이 됩니다. 이번에 수정하고 본격적으로 사용해 보면서 버그가 발생하면 잡아 봐야겠네요 ^^ 아! 여전히 GIMP 잘 쓰고 있답니다.

      2008.12.31 01:46 신고 [ ADDR : EDIT/ DEL ]
  5. 아하.. notepad2가 ㅎㅎ
    전 윈도우 자체 지원인줄 알았는데 별도로 다운로드 해야 하는군요! ^^
    저도 메모장과 울트라에디터를 사용하는데 노트패드2를 한번 써봐야겠는걸요? ^^

    2009.01.03 12:42 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • notepad 급의 속도로 구동되서 notepad2 인가봐요 ㅎ
      공식 릴리즈 말고 변형 버전중에 한글화 버전이 있으니
      http://mr-ok.com/tc/entry/Notepad2-with-context-menu 에서 받아서 사용해 보시기 바랍니다 ^^

      2009.01.03 13:03 신고 [ ADDR : EDIT/ DEL ]
  6. oshyuns

    나 노트패드 하나 더 좋은걸로 만들어줘~

    2009.04.20 11:15 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. xPloiTx

    사줘-0-

    2009.04.27 08:51 신고 [ ADDR : EDIT/ DEL : REPLY ]
  8. xPloiTx

    학교와서 사주고 가라!!!!!!!!!!!!!!!!!!!!!!!!!!! 못된놈아!!!!!!!!!!!!!!!!!!!!!!!! 연락도 안하는 XXX야!!!!!!!!!!!!!!!!!!!!!!! ㅋㅋㅋㅋ

    2009.04.27 08:51 신고 [ ADDR : EDIT/ DEL : REPLY ]

메모장2 한글화를 위해서 context-menu 역시 한글로 하자는 의견이 나와서 수정을 하게 되었다.
물론.. 이번에는 검색도 없이 조언을 받아 약간의 시행오차를 거쳐 수정하게 되었다.

frhed를 이용한 테스트

step 1. 레지스트리는 HKEY_CLASSES_ROOT\*\shell 에 추가되는데 "Open in frhed" 라는 key가 보인다.


step 2. 하위 항목인 "command" 키에는 실행될 프로그램의 경로 및 인자를 넘겨 주기 위한 %1이 존재한다.


step 3. "Open in frhed" 키에 존재하는 (기본값) 의 내용을 수정해 준다.


step 4. context-menu에서 출력되는 모습을 구경한다. 기본값을 설정해준 대로 변경되었다.
   


이것을 이용하면, 출력 포맷은 바뀌어도 key는 변하지 않으므로 수정이 용이하다고 한다. (BLUE'nLIVE 님의 조언)


레지스트리 편집기를 이용하는 것 말고 프로그램으로 이것을 적용하려면 아래와 같이 하면된다.
            HKEY key1;
            LONG res = RegCreateKey(HKEY_CLASSES_ROOT,L"*\\shell\\Open with notepad2",&key1);
            if (res == ERROR_SUCCESS)
            {
                WCHAR cmd[] = L"메모장2로 열기(&E)";
                RegSetValue(key1, NULL, REG_SZ, cmd, wcslen(cmd)); // wcslen - strlen for unicode
            }

            res = RegCreateKey(HKEY_CLASSES_ROOT,L"*\\shell\\Open with notepad2\\command",&key1);
            if (res == ERROR_SUCCESS)
            {
                WCHAR cmd[MAX_PATH + 4];
                WCHAR path[MAX_PATH];
                int len;
                GetModuleFileName(GetModuleHandle(NULL), path, MAX_PATH);
                len = wsprintf(cmd, L"%s %%1", path);
                RegSetValue(key1, NULL, REG_SZ, cmd, len);
            }

[wcslen  : http://msdn.microsoft.com/en-us/library/78zh94ax(VS.71).aspx]
신고
Posted by 구차니
TAG Notepad2

댓글을 달아 주세요

  1. 수고하셨습니다. ^^;;;

    2008.12.30 22:59 신고 [ ADDR : EDIT/ DEL : REPLY ]

컴파일을 이상없이 되는 관계로!
이제 기능추가를 위해 몸부림을 쳤다 ^^;

추가 될 내용은 레지스트리 관련기능들 인데..
문제는 /D "_UNICODE" 로 인해서 함수들이 모두 유니코드 대응으로 변환되었다는 점이다.



이로 인해서 약간의 삽질이 추가 되었다.

            HKEY key1;
            LONG res = RegCreateKey(HKEY_CLASSES_ROOT,
                L"Unknown\\shell\\Open with notepad2\\command",
                &key1);
            if (res == ERROR_SUCCESS)
            {
                WCHAR cmd[MAX_PATH + 4];
                WCHAR path[MAX_PATH];
                int len;
                GetModuleFileName(GetModuleHandle(NULL), path, MAX_PATH);
                len = wsprintf(cmd, L"%s %%1", path);
                RegSetValue(key1, NULL, REG_SZ, cmd, len);

유니코드로 함수들이 변경되면서 char 형의 변수에서 WCHAR 형으로 바뀌고
각종 스트링들도 T 접두를 붙여서 unicode 형으로 바꾸어 주었다.
물론 sprintf 역시 유니코드를 지원하는 wsprintf로 변경!

이로서 간편하게 context-menu에서 실행이 가능하도록 설정을 할 수 있게 되었다.
신고
Posted by 구차니
TAG Notepad2

댓글을 달아 주세요

  1. 수정하는 방법까지 포스팅했습니다.
    한번 읽어보시기 바랍니다. ^^;;;

    2008.12.29 00:09 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 앗 감사 합니다 ^^
      BLUE'nLIVE님 덕분에 VC++ 6.0 에서 편하게 컴파일도 하고 많은 공부가 되었습니다.

      2008.12.29 00:16 신고 [ ADDR : EDIT/ DEL ]
  2. 비밀댓글입니다

    2008.12.29 21:06 [ ADDR : EDIT/ DEL : REPLY ]
    • 조금 이해가 안되는 문구네요 ㅠ.ㅠ
      그러니까 context-menu에 "Open with Notepad2" 대신에 한글로 수정하되, 추후 수정이 용이한 방향으로 수정을 하셨으면 좋겠다는 의미이신가요?

      2008.12.29 23:13 신고 [ ADDR : EDIT/ DEL ]
    • 네. 맞습니다. (표현이 좀 앞뒤가 안맞네요)

      수정이 용이하도록 하기 위해, 레지스트리의 키값을 변경하지 말고, 디폴트 문자열 값을 하나 추가하잔 뜻입니다.

      2008.12.29 23:20 신고 [ ADDR : EDIT/ DEL ]
  3. 「Open with notepad2」를 간단히 「메모장2로 편집(E)」처럼 하면 좋을듯 싶네요;;

    2008.12.29 22:03 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 비밀댓글입니다

    2008.12.29 23:24 [ ADDR : EDIT/ DEL : REPLY ]
    • 레지스트리 조작은 처음이라서 ^^; 해보고 나서야 이해를 했네요 ㅎ 조언 감사합니다

      2008.12.29 23:41 신고 [ ADDR : EDIT/ DEL ]

MS Platform SDK를 설치 한다고 해서 바로 되는게 아니라
우선순위가 상당히 낮아져 있기 때문에 Visual Studio에서 설정을 바꾸어 주어야 한다는 말에
설정을 바꾸고 선언문을 삭제 하니 이상없이 컴파일이 되었다.




물론 소스상의 문제(?)로 프로토타입과 실제 함수의 리턴 타입이 맞지 않아 에러가 발생을 하긴 했지만 말이다.
일단 DWORD *func와 DWORD_PTR func가 같아 보이는데, 다르게 인식을 해서 생긴 문제였다.


아무튼 요즘에 Win32API 스타일로 프로그래밍을 하다 보니, 조금은 눈에 익은 녀석들이 보여서
상대적으로 그다지 어렵지는 않게 수정을 하고는 있지만, 생각보다 상당히 방대한 녀석이라..
Source Insight 없이 Visual Studio만으로 하기에는 상당히 귀찮은 느낌이 든다. ㅠ.ㅠ

오늘은 메뉴에 추가해서 체크 on/off까지만~


신고
Posted by 구차니
TAG Notepad2

댓글을 달아 주세요

  1. 오.. 슬슬 진전이 있군요^^ (구차니님 최~고~)
    문맥메뉴는 file보다 setting이 왠지 어울리는것 같아요.
    add가 있으면 remove도 있는것이 인지상정인 바,
    context-menu 하위에 to unknwon file type/to all file type/remove
    이렇게 집어넣는것도 괜찮을것 같다는 혼자만의 생각을 문득 하게되는 날입니다.

    감기조심하세요. 저는 어제 괜히 미친놈처럼 들떠서 나가놀다가 지금 몸져누웠습니다ㅠㅠ
    아오~ 진짜 아파 죽겠네요ㅠㅠ

    2008.12.25 12:57 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • BLUE'nLIVE님의 수고로 편하게 하네요 ㅎ
      모양만 했지 작동은 안되요 ㅎㅎ
      음.. 그런데 setting이 더 나을려나요?

      2008.12.25 13:47 신고 [ ADDR : EDIT/ DEL ]