Please Enable JavaScript!
Gon[ Enable JavaScript ]

Asp Component ATL 로 만들기

기타 언어/C# & MFC
반응형
만들어나가면서 시행착오를 기록하고 그것을 통해 좀더 발전된 형태로 업그레이드 하기 위한 기록이다.

1. 환경셋팅
ATL 에서 DB 연결을 위해 찾다가 ODBC 연결을 위한 클래스를 찾아 쓰게 되었는데 문제는 OLEDB 가 아니라서
내가 셋팅할 서버 window2000 에 DSN 설정을 하고 그 값을 넘겨야 한다. 하도 오래되나서 실수를 했는데
사용자 DSN 에다 만들어 놓은것이다.  시스템 DSN 에 만들어야 한다.


2. DLL 삭제
dll 을 만들어서 regsvr32 xxx.dll 등록하고 regsvr32 /u xxx.dll 로 해제 했는데도 공유 위반으로 삭제가
되지 않는것이다. 여러 프로그램찾아 써봤지만 안되길래 어디에 걸려있는지 궁금해서 분석툴을 찾았다.
dll 은 분명 실행 되어있는 어떤 프로세스에서 사용하고 있을것이다. 레퍼런스카운트가 0 이 되지 않으면
삭제되지 않는게 dll 이다.
그분석툴이 [ IceSword1.18en.rar-파일다운 ] 이다. 시스템 분석툴로도 많이 쓰고 네트웍감시로도 쓴다고
한다. 여하튼 이걸 통해서 프로세스에 연결된 내가 만든 dll 을 찾았다.

먼저실행후 왼쪽에 프로세스 아이콘을 클릭하면 오른쪽에 실행중인 프로세스 목록이 나온다.
각 프로세스에 오른쪽 마우스 클릭하고  Module Information 클릭한다.


위와 같이 클릭하면 연결된 dll 목록이 나온다. 일일이 클릭하느라 찾는데 시간이 걸렸다.
내가만든 Visit.dll 이 dllhost.exe 에 연결되어 있었다. 연결되는것이 당연하지만 unregister하면
풀에서 없어질줄 알았다. dllhost 는 응용프로그램에 쓰이는 서비스들을 핵심응용프로그램인
웹 서비스(Inetinfo.exe)등과 분리해서 관리한다. dllhost 가 관리한느 서비스가 다운되었을 경우에도
다른 핵심응용프로그램 웹 서비스(Inetinfo.exe)등에 영향을 주지 않기 위해서다. 
핵심응용프로그램을 보호하도록 dllhost.exe 가 관리하는 것이다.

그림에서와 같이 Visit.dll 을 찾아서 오른쪽 unload(force) 강제해제 해주었다.


하지만 이렇게 해도 공유위반으로 삭제가 되지 않았다. 그래서 다른프로그램을 검색해서
찾아낸게 있는데 [ unlocker1.8.3-.zip - 파일다운 ]  이다. 프로그램을 설치하고 파일에
오른쪽 마우스클릭하면 다음과 같이 Unlocker 라는 메뉴가 생긴다.


이것을 클릭하면 다음과 같은 화면이 뜨는데 이것은 Visit.dll 이 연결된 프로세스를 보여주는것이다.
삭제는 왼쪽 콤보에서 삭제를 선택하고 제일 첫번째 버튼 , 프로세스 xxx 누르면 삭제된다. 단어가
개발새발인건 무엇때문인지 모르것다.


반응형
Posted by 녹두장군

댓글을 달아 주세요