프로그램/프로그램 삭제&설치

자꾸 클래스가 등록되지 않아서 게임을 설치할수 없습니다.

sungtg 2007. 12. 31. 17:40

질 문

게임을 다운받았는데요..
(프메) 씨디스페이스에 넣고 돌려서 셋업하면 자꾸 클래스가 등록되지 않았습니다.
게임을 설치할수 없습니다. 라고 나와요..-_-

지식검색에서 찾다가 찾다가 다이렉트 X도 새로 설치해보고 그랬는데 안되거든요?
제가 보기엔 윈도우 미디어 문제인것 같기도 하고..

얼마전에 윈미디어 10을 새로 설치했거든요?
제가 원래 avi 파일은 곰플레이어로 볼수있게 설정해 놓아서 avi 파일은
더블클릭하면 곰플레이어로 바로 실행됐었는데

윈미디어 10 설치하고 나서 더블클릭해도 실행되지도 않고(모래시계 나온후 금방 사라지고 아무 변화 없음)
좀 이상해진것 같은데;;

만약에 윈미디어 때문이라면 이거 삭제 어떻게 해야하나요??
제어판에서 프로그램 설치/제거 에도 안뜨고..
따로 언인스톨 프로그램도 없는것 같은데..

게임 하고싶은데 정말 난감합니다..-_-

분석


게임설치까지는 되는 것 같은데
cd space에 등록이 되지 않는 것 같습니다.

곰플레이어는 윈도우미디어10을 최근에 설치를 했기 때문에
윈도우미디어로 파일연결이 바뀌었을 겁니다.

곰플레이어도 실제로 안에 내용을 들여다 보면 미디어플레이어엔진을
사용해서 제작한 프로그램이기 때문에 충돌이 난다면 실행이 안되는 경우도
나타날 수 있습니다.
다시 곰플레이어를 사용하려면 최신버전으로 설치를 해야 겠지요

윈도우미디어는 윈도우에 내장되어 있습니다.
2000은 6.4버전이고 xp는 7.0버전입니다.

그러므로 제어판에서 삭제를 하면 삭제가 되는 것이 아니고
버전만 다운되는 효과를 볼 수 있습니다.

문제는 윈도우미디어도 아니고
다이렉트x 문제도 아닌
cd space에 게임이 등록이 안되는 것일 거라고 판단이 됩니다.

cd space를 다시 삭제를 하고
다시 cd space부터 설치를 한 후
게임을 설치를 해서 사용하세요

이것도 안되면 다시 윈도우에 설치된 프로그램중 쓰지 않는
프로그램을 상당 부분 삭제를 한 후
다시 부팅을 해서 반복을 해야 합니다.

추가


에러를 살펴보면 "클래스에 등록이 되지 않는다고" 하는데

윈도우에서 프로그램을 설치를 하면 레지스트리 클래스에 등록을 시키는 과정이 있습니다.
그런데 이 과정에서 등록이 되지 않는 다는 이야기 입니다.

레지스트리에 보면
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
에 키값을 등록을 시켜서 플레이가 되어야 하는데
이곳에 등록 즉 저장이 되지 않았다는 이야기 입니다.

사용자 삽입 이미지

그럼 이 과정이 왜 중요하냐면
COM 이라는 개념을 사용합니다.
프로그램간의 연결
네트워크 컴퓨터 간의 연결
파일의 연결
OLE 객체의 연결 등
윈도우의 가장 핵심인 기술입니다.
이것이 없었다면 인터넷이 그렇게 발달할 수도 없었을 겁니다.

이 COM이나 COM+ DCOM을 지원하는 윈도우의 영역이 바로 클래스 부분입니다.

쉽게 설명하자면 익스플로러에서
어떤 사이트에 들어가서 플래시 영상이나 만화를 본다고 할때
익스플로러에서 플래시를 보여주는 것이 아니고
익스플로러에서 SYSTEM32 폴더에 있는 flash과 관련된 .ocx나 dll파일
그리고 다이렉트 x 과 관련된 dll 파일을 불러서 실행을 하면서
보여지는 것이죠

이 과정이 사용자가 볼때는 전혀 인식을 할 수 없는데
dll파일을 호출하면 프로세스가 있어야 할 겁니다.
가끔 보는 rundll에러가 이런 경우인데 ..

보통은 이렇게 프로세스를 발생시키지 않고
위에서 보는 레지스트리의 클래스 단에 클래스 키를 등록을 시키고
그 키 값을 호출하게 되는 것이죠

키와 dll파일이나 ocx 파일들은 모두 연결을 되어 있으므로
자연스럽게 dll파일이 실행이 되는 겁니다.
dll파일은 svchost.exe에서 불러서 실행이 되는 것이고요

아래 그림은 {0000002F-0000-0000-C000-000000000046} 클래스 키값의
dll 파일은 ole32.dll 파일입니다.
결국 실행파일에서 위의 {0000002F-0000-0000-C000-000000000046} 키값을 호출하면
결국 ole32.dll이 실행이 되는 것이죠
주로 개체삽입이나 복사 등에서 사용되는 파일입니다
사용자 삽입 이미지



그럼 만약 이 키값이 삭제가 된다면 윈도우는 제대로 작동을 할수가 없을 겁니다.
기능이 마비될테니까요.

다시 질문으로 돌아가서
cdspace에 설치한 게임에 대한 정보가 없다면
게임은 cdspace를 사용해야 하는데
cdspace에서는 전혀 호출되는 아무런 변화가 없다면 그냥 먹통이 되는 겁니다.

프로그램을 많이 설치 했다가 삭제를 했다가 하면
레지스트리의 CLSID 영역이 커 집니다.

그러면 자연스럽게 클래스가 엉킬 경우가 있습니다.
레지스트리 정리 프로그램이 바로 이 클래스 부분을 정리를 하는데..

우리나라 것은 최근 2001년도 부터 CLSID부분을 정리해주는 프로그램들이 나왔는데
레지스트리 정리 프로그램이 어떤 것이 좋냐는
그만큼 만드는 회사에서 레퍼런스가 많아서
어떤 프로그램들은 어떤 엔진으로 만드므로 어떤 클래스키를 사용할 것이다 라는
KNOW-HOW가 많은 곳이 잘 만들수 밖에 없기 때문에

그동안 죽 레지스트리 정리프로그램을 만드는 회사가 만드는 겁니다.

윈도우가 엉킨다고 하는 부분이 바로 CLSID 부분이지
다른 레지스트리 부분은 크게 윈도우의 영향을 주지 않습니다.

그럼 답이 나오죠 윈도우를 관리하는 요령이 바로 나올 겁니다

악성코드나 바이러스도 어떻게 숨길 수 있을 런지도 답이 나오고
앞으로 나올 악성코드나 바이러스도

각자 내가 제작자라면 어디에다가 숨기면 가장 확실할지 나올 겁니다.
윈도우에서 가장 많이 사용하는 DLL파일이나
레지스트리와 정보를 주고받는 DLL파일이 등등 가장 악질의 경우입니다만

윈도우패치라는 것도 바로 이런 것을 막는 것입니다.
처음 제작할 때는 아무 생각없이 윈도우가 돌아가게만 만들었다가
악성코드나 바이러스에 의해서 허점을 보완하는 단계이고

주로 DLL파일들이 업데이트되는데 업데이트는 과정에서
CLSID 부분의 클래스값을 교체하는 겁니다.