다음을 통해 공유


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을 통해 파일에서 로드되었습니다.
또한 클라이언트는 IPersistFile::IsDirty 메서드를 호출하여 링크 개체가 변경되었고 파일을 업데이트해야 하는지 여부를 확인할 수 있습니다.

해결 에는 대상 개체를 찾는 두 가지 방법이 있습니다. 첫 번째는 분산 링크 추적 서비스입니다. 서비스를 사용할 수 있는 경우 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 이상)