2016-10-18 1 views
2

ProgramData 폴더에 쓰는 구성 요소가있는 Windows 응용 프로그램이 있습니다. 제거 프로그램을 실행하면이 구성 요소에서 생성 된 파일이 제거되지 않습니다. UAC :: RunElevated 사용하여, 우리가 처음 작동시 경우 ProgramDataProgramData에서 사용자 생성 파일을 삭제하지 못하는 NSIS RMDir

SetOutPath "$RENDERER_INSTALL_DIR" 

LogSet On 
File /r "${MAGNIFY_DIR}/secRenderer/Arelle/*" 
LogSet Off 

AccessControl::GrantOnFile "$RENDERER_INSTALL_DIR" "(S-1-5-32-545)" "FullAccess" 

으로 타사 구성 요소를 설치,이 구성 요소를 제거하는 동안

경우 ProgramData

에서 자신의 설치 디렉토리에 기록, 우리는 위에서 생성 한 폴더를 삭제하려고 UAC :: RunElevated를 다시 사용하여

RMDir /r $RENDERER_INSTALL_DIR 

그러나 구성 요소를 작동하여 만든 파일은 제거되지 않습니다.

우리는 이러한 파일이 Administrator가 아닌 구성 요소를 사용하는 사용자가 소유하고 있음을 확인했습니다. 그러나 관리자는 전체 읽기, 쓰기 및 삭제 권한이 있습니다.

어떻게하면 되나요?

+0

UAC 플러그 인을 사용하지 않는 것이 좋습니다. – Anders

답변

2

실제로이 질문에 대답하기위한 많은 알려지지 않은 두 가지가 있습니다.

UAC 플러그인이 관련된 이유는 무엇입니까? 귀하의 시스템 액세스에만 유용합니다! 올바르게 사용하는 것은 또한 까다 롭습니다 그래서 나는 당신이 그것없이 시도 할 것을 권합니다.

이 타사 구성 요소가 ACL을 변경합니까? 제거하기 전에 ACL을 확인하십시오.

file system virtualization이 (가) 당신을 속일 수 있습니까? VirtualStore 폴더를 확인하십시오.

Process Monitor의 내용은 무엇입니까? ACCESS_DENIED 또는 다른 오류가 발생하고 있습니까?

ProgramData에서 폴더에 대한 모든 권한을 모든 사용자에게 부여하는 것은 좋지 않으며이 구성 요소를 요구하는 구성 요소는 Windows 로고 지침을 따르지 않습니다.

+1

감사 프로세스 모니터는 RMDir 라인이 실제로 실행되고 있지 않다는 것을 보여 주었으며, 우리가 제거 프로그램이 알고있는 파일을 자동으로 제거한다는 것을 알지 못했기 때문에 이것을 인식하지 못했습니다 –

관련 문제