2012-07-02 3 views
5

이미 존재하는 심볼 링크의 대상을 어떻게 바꿀 수 있습니까? 어떤 해결책이든 작동합니다 : console, powershell 등.Windows의 심볼 링크 대상 변경

중요하게 생각하면이 변경을 원자 단위로 변경하여 링크를 삭제 한 다음 새로운 링크를 만들면 해결되지 않습니다.

+0

트랜잭션에서 삭제 및 레크리에이션을 래핑하는 경우 엔 원자가 될 것입니다. –

+0

어떤 종류의 거래입니까? 같은 디스크에 파일을 이동하는 것과 같은 파일 시스템 작업은 원자 적이라고 생각합니다. 두 파일 작업이 아닙니다. 내가 틀렸다면 나를 바로 잡아주세요. –

+0

내 대답보기. Windows Vista에서 트랜잭션 NTFS에 대한 지원이 추가되었습니다. –

답변

2

ZwFsControlFile functionFSCTL_SET_REPARSE_POINT control code을 사용하여 가능할 것으로 보입니다. 적어도 그것은 내가 Far Manager가 Process Monitor를 통해 수행하는 방식에서 수집 한 것입니다.

+0

2017 년 3 월 [Far Manager] (http://svn.code.sf.net/p/farmanager/code/trunk/unicode_far/flink.cpp)는 [DeviceIoControl] (https://msdn.microsoft.com)을 사용합니다. /en-us/library/windows/desktop/aa363216%28v=vs.85%29.aspx)는 symlink 또는 junction 타겟을 변경하거나 편집하는 기능을합니다. –

2

당신은 트랜잭션 NTFS를 사용할 수 있습니다. 다음과 같은 기능을 참조하십시오

단점은 MS 트랜잭션에 대한 지원을 비하하는 것입니다. 특히 Windows Server 2012에 도입 된 새로운 파일 시스템에서는 트랜잭션을 사용할 수 없습니다.

+0

고마워요, 해리. 거래를 할 수는 없지만 결코하지 마십시오. 불행히도 지원 중단은 나쁜 신호이므로 사용할 수 있을지 잘 모르겠습니다. –