IShellLinkW::Resolve 메서드(shobjidl_core.h)
셸 링크가 이동되거나 이름이 바뀐 경우에도 셸 링크의 대상을 찾으려고 시도합니다.
구문
HRESULT Resolve(
HWND hwnd,
DWORD fFlags
);
매개 변수
hwnd
형식: HWND
셸이 대화 상자의 부모로 사용할 창에 대한 핸들입니다. 셸 링크를 확인하는 동안 사용자에게 자세한 정보를 묻는 메시지가 표시되어야 하는 경우 셸에 대화 상자가 표시됩니다.
fFlags
형식:DWORD
작업 플래그. 이 매개 변수는 다음 값의 조합일 수 있습니다.
SLR_NO_UI(0x0001)
0x0001. 링크를 확인할 수 없는 경우 대화 상자를 표시하지 마세요. SLR_NO_UI 설정되면 fFlags의 상위 단어를 링크 확인에 소요되는 최대 시간을 지정하는 제한 시간 값으로 설정할 수 있습니다. 함수는 시간 제한 기간 내에 링크를 확인할 수 없는 경우 를 반환합니다. 높은 순서의 단어가 0으로 설정된 경우 제한 시간은 기본값인 3,000밀리초(3초)로 설정됩니다. 값을 지정하려면 fFlags 의 상위 단어를 원하는 시간 제한 기간(밀리초)으로 설정합니다.
SLR_ANY_MATCH(0x0002)
0x0002. 사용되지 않습니다.
SLR_UPDATE(0x0004)
0x0004. 링크 개체가 변경된 경우 해당 경로 및 식별자 목록을 업데이트합니다. SLR_UPDATE 설정된 경우 IPersistFile::IsDirty를 호출하여 링크 개체가 변경되었는지 여부를 확인할 필요가 없습니다.
SLR_NOUPDATE(0x0008)
0x0008. 링크 정보를 업데이트하지 마세요.
SLR_NOSEARCH(0x0010)
0x0010. 검색 추론을 실행하지 마세요.
SLR_NOTRACK(0x0020)
0x0020. 분산 링크 추적을 사용하지 마세요.
SLR_NOLINKINFO(0x0040)
0x0040. 분산 링크 추적을 사용하지 않도록 설정합니다. 기본적으로 분산 링크 추적은 볼륨 이름을 기반으로 여러 디바이스에서 이동식 미디어를 추적합니다. 또한 UNC 경로를 사용하여 드라이브 문자가 변경된 원격 파일 시스템을 추적합니다. SLR_NOLINKINFO 설정하면 두 가지 유형의 추적이 모두 비활성화됩니다.
SLR_INVOKE_MSI(0x0080)
0x0080. Windows 설치 관리자를 호출합니다.
SLR_NO_UI_WITH_MSG_PUMP(0x0101)
0x0101. Windows XP 이상.
SLR_OFFER_DELETE_WITHOUT_FILE(0x0200)
0x0200. Windows 7 이상. 바로 가기가 파일에 대한 바로 가기가 아니더라도 이 메서드를 resolve 수 없는 경우 바로 가기를 삭제하는 옵션을 제공합니다.
SLR_KNOWNFOLDER(0x0400)
0x0400. Windows 7 이상. 대상이 알려진 폴더이고 알려진 폴더가 리디렉션되었는지 더티 보고합니다. 원래 대상 경로가 별칭이 지정된 알려진 폴더 ID 목록이 아닌 파일 시스템 경로 또는 ID 목록인 경우에만 작동합니다.
SLR_MACHINE_IN_LOCAL_TARGET(0x0800)
0x0800. Windows 7 이상. 로컬 컴퓨터를 가리키는 UNC 대상의 컴퓨터 이름을 확인합니다. 이 값은 SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET 함께 사용됩니다.
SLR_UPDATE_MACHINE_AND_SID(0x1000)
0x1000. Windows 7 이상. 필요한 경우 컴퓨터 GUID 및 사용자 SID를 업데이트합니다.
반환 값
형식: HRESULT
메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
링크를 만든 후 대상의 이름 또는 위치가 변경 될 수 있습니다. IShellLink::Resolve 메서드는 먼저 링크와 연결된 경로를 검색합니다. 개체가 더 이상 없거나 이름이 변경된 경우 Resolve 는 개체를 찾으려고 시도합니다. 성공하고 다음 조건이 충족되면 링크 개체가 로드된 파일이 링크 개체의 새 상태를 반영하도록 업데이트됩니다.
- SLR_UPDATE 플래그가 설정됩니다.
- 대상을 이동하거나 이름을 변경하여 새 대상을 참조하도록 Shell 링크 개체의 내부 상태를 업데이트합니다.
- Shell 링크 개체가 IPersistFile을 통해 파일에서 로드되었습니다.
해결 에는 대상 개체를 찾는 두 가지 방법이 있습니다. 첫 번째는 분산 링크 추적 서비스입니다. 서비스를 사용할 수 있는 경우 NTFS 버전 5.0 볼륨에 있고 해당 볼륨의 다른 위치로 이동된 개체를 찾을 수 있습니다. 다른 컴퓨터의 볼륨을 포함하여 다른 NTFS 버전 5.0 볼륨으로 이동된 개체를 찾을 수도 있습니다. 이 서비스의 사용을 억제하려면 SLR_NOTRACK 플래그를 설정합니다.
분산 링크 추적을 사용할 수 없거나 링크 개체를 찾지 못하는 경우 검색 추론을 사용하여 이 개체를 찾으려는 시도를 해결 합니다. 먼저 개체의 마지막으로 알려진 디렉터리에서 이름이 다르지만 특성 및 파일 생성 시간이 동일한 개체를 찾습니다. 다음으로, 개체의 마지막으로 알려진 디렉터리 부근에서 하위 디렉터리를 재귀적으로 검색합니다. 이름이 같거나 생성 시간이 같은 개체를 찾습니다. 마지막으로 Resolve 는 데스크톱 및 기타 로컬 볼륨에서 일치하는 개체를 찾습니다. 검색 추론의 사용을 억제하려면 SLR_NOSEARCH 플래그를 설정합니다.
두 방법이 모두 실패하면 시스템에 사용자에게 위치를 묻는 대화 상자가 표시됩니다. 대화 상자를 표시하지 않하려면 SLR_NO_UI 플래그를 설정합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | shobjidl_core.h |
DLL | Shell32.dll(버전 4.0 이상) |