문제

제품을 업데이트하는 Windows 서비스가 있습니다. 제품 파일을 일반적으로 "C : Windows Temp"에 온도 디렉토리로 복사하고 Binaries를 패치 한 다음 MoveFileEx를 사용하여 파일을 다시 부팅에서 설치 디렉토리로 복사합니다. ". 설치 디렉토리의 파일은 상위 폴더의 보안 속성을 상속합니다. 사본, 패치 및 재부팅 후 설치 디렉토리의 파일에 일부 ACL이 없습니다. 특히 파일에는 더 이상 사용자 그룹의 ACL이 없으므로 재부팅 후 사용자가 더 이상 프로그램을 실행할 수 없습니다.

누구든지 여기서 무슨 일이 일어나고 있는지 설명 할 수 있습니까? 설치 디렉토리에서 임시 디렉토리로 복사하면 파일이 Temp 디렉토리의 ACL을 상속받는 것 같습니다. 그러나 MoveFileEx/Reboot에서 파일은 설치 및 임시 디렉토리의 공통점이있는 ACL 만 상속합니다.

도움이 되었습니까?

해결책

Windows에서 파일을 복사하면 파일이 대상 디렉토리의 ACL을 사용합니다. 파일을 이동하면 ACL이 해당 디렉토리에서 상속 될 수있는 것을 재정의하는 것과 함께 사용합니다. MoveFileEx가 파일에서 어떻게 다르게 작동 할 수 있는지 잘 모르겠습니다.

Temp 디렉토리는 일반적으로 사용자 프로필 아래에 위치하고 (일반적으로 여기서는 % tmp % 및 % temp %가 모두 지적) 여기에 파일을 복사하면 해당 사용자에 대한 권한이 있습니다. 해당 파일을 Program Files Directory로 이동하면 해당 사용자의 권한 만 사용하므로 설치 사용자 만 실행할 수 있습니다.

다른 팁

잠재적 인 해결 방법 중 하나는 동일한 디렉토리가 있지만 이름이 다른 파일의 사본을 패치하는 것입니다. 재부팅 후 패치 버전을 교체 할 수 있습니다. 또는 먼저 재부팅 한 다음 내내 패치를 한 다음 수동 롤백이 필요한 경우 Temp 디렉토리로 백업하십시오.

실제로 다른 위치로 이동하려면 패치 할 파일과 동일한 위치에 온도 폴더를 작성하면 디렉토리가 상속 된 권한을 사용한다고 가정 할 때 권한이 동일한 상태를 유지하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top