2009-02-24 2 views
5

프로세스에 영향을 줄 수 있습니까?
.NET 3.5/VS2008에 응용 프로그램이 있습니다. win32 .res 파일로 여러 아이콘을 앱에 임베드했습니다. VS2008의 프로젝트 속성 상자에서 .ico 파일을 지정하는 대신 상자에 .res 파일을 지정하십시오. .res 파일에서 여러 개의 아이콘을 가질 수 있습니다. 내 말은 here을 참조하십시오.Vista는 내 응용 프로그램과 관련된 문서 아이콘을 어떻게 생성합니까?

각 아이콘에는 256x256xRGB (PNG Cmopressed)의 "Vista 급"이미지, 256x256x32bit 이미지 및 다양한 색상 조합의 48x48, 32x32 및 16x16 이미지의 일반적인 캐스케이드가 포함되어 있습니다. Explorer에서 결과로 나타나는 exe를 보면 크고 아름다운 256x256 Vista 이미지를 볼 수 있습니다.

그러면 Vista의 탐색기에서 마우스 오른쪽 버튼 클릭> "연결 프로그램 ..."> 기본 프로그램 클릭 스트림 설정을 사용하여 내 앱에 파일 확장명을 연결할 수 있습니다. 그러나 문서 옆에 표시된 아이콘은 접힌 모서리가있는 흰색 종이처럼 보이는 위에 작은 아이콘의 응용 프로그램 아이콘입니다.

결과는 "작은 아이콘"버전으로 표시 될 때 원본 이미지가 보이지 않아 보이기 쉽다는 것입니다. 그것은 끔찍한 보입니다.

접힌 종이 조각을 완전히 없애거나 최소한 더 큰 이미지를 오버레이 할 수 있다는 것을 알고 있습니다. 예를 들어, C# 파일의 아이콘에는 접힌 용지가 있지만 C# 상징은 크고 표시됩니다. 이것을 어떻게 얻을 수 있습니까? WinZip 12를 설치하면 .zip 파일 아이콘이 크고 볼 수 있으며 접힌 용지가 없습니다.

문서 아이콘이 응용 프로그램 아이콘과 다른가요? Vista에서 내 앱과 관련된 문서에 사용할 아이콘을 등록하기 위해해야 ​​할 일이 내 앱에 있습니까?

답변

13

파일 확장명의 아이콘과 파일 연결은 레지스트리에 나열되어 있습니다. 보다 구체적으로, HKEY_CLASSES_ROOT\.ext 항목에는 콘텐츠 형식, 인식 형식이 포함되어 있으며 (Default) 값은 실제 연결입니다. 예를 들어 .cs 파일의 기본값은 VisualStudio.cs.9.0입니다 (VS 2008이 있음). HKEY_CLASSES_ROOT\VisualStudio.cs.9.0을 확인하면이 파일 유형과 관련된 실제 아이콘, 프로그램 및 명령을 볼 수 있습니다. 특히 HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon은이 유형의 파일에 대해 표시 할 아이콘을 Explorer에 알려주는 항목입니다. 바이너리와 해당 바이너리의 리소스 ID를 가리 킵니다.

마우스 오른쪽 버튼 클릭 -> 연결 프로그램 ...을 통해 파일 유형을 프로그램에 연결하면 기본 아이콘이 지정되지 않으므로 Explorer는 앱의 아이콘을 가져 와서 일반 문서 아이콘 위에 오버레이합니다 .

적합한 방법은 설치 프로그램의 일부로 파일 형식을 응용 프로그램과 아이콘과 연결하는 적절한 레지스트리 항목을 포함시키는 것입니다. 포함해야하는 정확한 레지스트리 값은 해당 파일 유형에 대한 상황에 맞는 메뉴에 추가 할 명령에 따라 다르지만 최소한 Open 명령이 필요합니다. .cs 파일의 경우 HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open(Default) 값이 있고 Open 명령이 호출 될 때 시작할 응용 프로그램이 들어 있음을 알 수 있습니다. HKEY_CURRENT_USER\Software\ClassesHKEY_LOCAL_MACHINE\Software\Classes 다음 HKEY_CLASSES_ROOT 두 레지스트리 가지의 맵이다 명심

(당신은 지금은 ddeexec 부분을 무시할 수 있습니다). 파일 연결을 모든 사용자에게 허용하려면 HKEY_LOCAL_MACHINE에 작성해야합니다. 이를 수행하려면 설치 프로그램을 관리자 권한으로 실행해야합니다. 그렇지 않으면 HKEY_CLASSES_ROOT에 쓰기를 시도하면 액세스가 거부되거나 HKEY_CURRENT_USER에 쓰고 실패하고 현재 사용자에 대해서만 연결이 수행됩니다.(정확히 어떤 일이 일어날 지 OS가 무엇인지 등 여러 가지에 달려 있습니다. 사용자가 관리자이든 아니든 승무원이 아니어도 상관 없습니다.)

MSDN의 Customizing File Types (Files Associations) 섹션에서이 모든 내용을 읽을 수 있습니다. 특히 File TypesRegistering Programs with Client Programs은 정확히 어떻게하는지에 대한 기본을 제공합니다.

+0

와우! 좋은 대답. 완전한! 그냥 내가 뭘 찾고 있었는지! – Cheeso