Share via


IShellLinkA::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 Installer를 호출합니다.

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

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