Symbolic Link 파일인지 확인하는 방법 (Windows API)
1. FindFirstFile로부터 File의 Symbolic Link 속성을 확인하는 방법
HANDLE FindFirstFileA( WIN32_FIND_DATAA의 dwFileAttributes 멤버가 FILE_ATTRIBUTE_SPARSE_FILE 속성이 있는지 확인 dwReserved0 멤버가 IO_REPARSE_TAG_SYMLINK or IO_REPARSE_TAG_MOUNT_POINT 속성이 있는지 확인 |
2. GetFileAttribute로부터 File의 Symbolic Link 속성을 확인하는 방법
DWORD GetFileAttributesA( Return 값의 File Attribute 속성이 FILE_ATTRIBUTE_REPARSE_POINT인지 확인 |
3. Symbolic Link의 Target에 관한 정보를 얻는 방법
1) GetFinalPathNameByHandle
DWORD GetFinalPathNameByHandleA( 특정 파일의 최종 경로를 제공해주는 API ex) symbolic link name "C:\tmp\mydir"가 "D:\yourdir"을 가리키면, 입력이 symbolic link name의 handle이면, 최종 경로는 "D:\yourdir"를 return한다. |
2) GetFileInformationByHandleEx
BOOL GetFileInformationByHandleEx( FileInformationClass가 FILE_STANDARD_INFO이면, NumblerOfLinks 멤버로 해당 파일의 링크의 개수를 확인 FileInformationClass가 FILE_ATTRIBUTE_TAG_INFO이면, FileAttributes와 ReparseTage 멤버를 참조해서 FILE_ATTRIBUTE_SPARSE_FILE 속성과 IO_REPARSE_TAG_SYMLINK or IO_REPARSE_TAG_MOUNT_POINT 값을 확인할 수 있다.
|
기본적으로 mklink / CreateSymbolicLink를 사용해서 링크를 생성
mklink [링크] [원본]
mklink /d \MyFolder \Users\User1\Documents
mklink /j \MyFolder \Users\User1\Documents
mklink /h \MyFile.file \User1\Documents\example.file 하드링크를 생성
mklink \MyFile.file \User1\Documents\example.file 심볼릭 링크를 생성
https://docs.microsoft.com/ko-kr/windows-server/administration/windows-commands/mklink