리디렉션된 문자열 찾기
이 항목에서는 리디렉션된 레지스트리 문자열을 찾기 위한 프로그래밍 지침에 대해 설명합니다. 자세한 내용은 레지스트리 문자열 리디렉션 사용을 참조하세요.
Language-Neutral 레지스트리 값 로드
Windows Vista 이상에서 MUI 애플리케이션은 언어 중립적 레지스트리 값을 사용하여 문자열 리소스 테이블에 저장된 언어별 문자열에 대한 액세스를 허용합니다. 자세한 내용은 레지스트리 문자열 리디렉션 사용에서 Language-Neutral 리소스 만들기를 참조하세요.
레지스트리에서 언어 중립적 값을 읽는 애플리케이션 코드는 RegLoadMUIStringW를 호출하여 올바른 사용자 인터페이스 언어로 문자열을 로드해야 합니다. 이 함수를 사용하는 경우 애플리케이션은 리소스 로드를 명시적으로 처리할 필요가 없습니다.
기존 애플리케이션을 레지스트리의 언어 중립적 사용으로 업데이트하는 경우 일반적으로 기존 문자열 값을 영어 또는 레지스트리의 다른 단일 언어로 지역화하여 대체 및 이전 버전과의 호환성을 유지합니다. 레지스트리에 리터럴 문자열을 유지하면 RegLoadMUIStringW 에 대한 호출이 실패할 경우 애플리케이션이 리터럴 문자열로 대체됩니다. MUI가 이러한 구현에 대한 지원을 제공하지 않는 경우 이러한 대체를 구현하는 방법을 결정해야 합니다.
셸 API를 사용하여 레지스트리에서 바로 가기 문자열 설정
애플리케이션은 셸 API를 사용하여 시작 메뉴 또는 데스크톱에서 파일 또는 폴더를 연결하는 바로 가기에 대한 문자열을 만들 수 있습니다. 자세한 내용은 레지스트리 문자열 리디렉션 사용에서 바로 가기 문자열에 대한 리소스 만들기를 참조하세요.
애플리케이션은 SHSetLocalizedName 을 사용하여 바로 가기에 대한 MUI 규격 표시 이름을 로드할 수 있습니다. IShellLink::SetDescription을 사용하여 연결된 InfoTip을 설정해야 합니다. 호출은 레지스트리에 문자열을 등록합니다. "HKCR"이 HKEY_CLASSES_ROOT 레지스트리 키를 나타내는 다음 예제를 살펴보겠습니다.
HKCR,"CLSID\%CLSID_AntiSpyware%",,,"Windows AntiSpyware"
HKCR,"CLSID\%CLSID_AntiSpyware%","LocalizedString",,"@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,-104"
HKCR,"CLSID\%CLSID_AntiSpyware%","InfoTip",,"@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,-208"
첫 번째 줄은 대체 및 이전 버전과의 호환성을 위해 할당되지 않은 리터럴 문자열을 제공합니다. 두 번째 줄에는 표시 이름을 등록하는 MUI 규격 방법이 표시됩니다. 이 줄은 Msascui.exe(Windows XP의 경우) 또는 관련 언어별 파일(Windows Vista의 경우)에 저장된 문자열 식별자 104를 나타냅니다. 이 문자열 식별자는 "내 네트워크 위치"에 해당합니다. 예제의 세 번째 줄은 InfoTip 등록을 처리합니다. %CLSID_AntiSpyware%는 이 구성 요소의 클래스 식별자와 일치하는 GUID를 나타내는 환경 변수를 지정합니다.
위에 표시된 예제에서 애플리케이션은 SHSetLocalizedName 을 호출하여 처음 두 매개 변수의 실행 파일 경로를 지정하고 idsRes를 "@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,104"로 지정합니다. IShellLink::SetDescription에 대한 호출은 InfoTip의 경로를 "@%ProgramFiles%\Windows AntiSpyware\MSASCui.exe,208"로 지정합니다.
레지스트리에서 친숙한 문서 형식 이름 쿼리
친숙한 문서 형식 이름에 대한 리소스 만들기는 레지스트리 문자열 리디렉션 사용에서 친숙한 문서 형식 이름에 대한 리소스 만들기에서 설명합니다. 친숙한 문서 이름을 쿼리하려면 애플리케이션에서 IQueryAssociations::Init를 사용하고 IQueryAssociations::GetString을 호출해야 합니다. IQueryAssociations::Init 호출은 문서 형식(예: ".txt")을 지정합니다. IQueryAssociations::GetString에 대한 호출은 ASSOCSTR_FRIENDLYDOCNAME 문자열 식별자로 지정해야 합니다.
레지스트리에서 읽지 않는 Microsoft 관리 콘솔 스냅인 문자열 등록
애플리케이션은 MMC(Microsoft Management Console) 스냅인을 사용하여 관리 작업을 호스트할 수 있습니다. 대부분의 문자열은 레지스트리 문자열 리디렉션 사용의 Microsoft 관리 콘솔 Snap-Ins 대한 문자열 리소스 만들기에 설명된 레지스트리 설정을 사용하여 리소스로 처리됩니다. 그러나 일부 스냅인은 MMC가 레지스트리에서 읽을 수 없는 레지스트리 문자열 값을 등록합니다. 이 경우 스냅인은 MUI 호환 ISnapinAbout 인터페이스를 사용하여 값을 가져와야 합니다.
레지스트리에서 Windows 서비스에 대한 표시 이름 및 설명 설정
MUI 애플리케이션이 Windows 서비스를 사용하는 경우 서비스 표시 이름과 설명을 표시해야 합니다. 연결된 리소스는 레지스트리 문자열 리디렉션 사용의 "Windows 서비스에 대한 문자열 리소스 만들기"에서 설명합니다.
서비스 표시 이름을 설정하기 위해 MUI 애플리케이션은 CreateService 또는 ChangeServiceConfig를 호출합니다. 이름은 "@<PE-path>,-<stringID>[;<comment>]
" 형식의 문자열입니다. 예를 들어 서비스가 경로 %ProgramFiles%\%MyPath%\MyDll.dll 있는 .dll 파일에 의해 구현되고 언어별 표시 이름의 문자열 식별자가 347인 경우 매개 변수는 "@%ProgramFiles%\\%MyPath%\\MyDll.dll,-347
"로 지정됩니다. C/C++는 백슬래시를 문자열의 이스케이프 문자로 사용하므로 이중 백슬래시(\\)가 필요합니다.
언어별 서비스 설명을 설정하려면 MUI 애플리케이션은 SERVICE_DESCRIPTION 구조체의 lpDescription 멤버가 적절한 문자열 식별자를 참조하는 "@<PE-path>,-<stringID>[;<comment>]
" 형식의 문자열을 나타내도록 해야 합니다. 그런 다음 애플리케이션은 매개 변수 dwInfoLevel이 SERVICE_CONFIG_DESCRIPTION 지정되고 매개 변수 lpInfo가 SERVICE_DESCRIPTION 구조체로 지정된 ChangeServiceConfig2를 호출합니다.
관련 항목