2008-09-19 3 views
2

필자는 Fixtures Setup에서 파일을 백업하고 원본을 삭제하고 원본을 삭제하지 않고 테스트를 실행 한 다음 분리에서 원래 파일을 백업에서 복원하는 테스트를 작성하려고합니다. 파일은 % ProgramFiles % 폴더에 있습니다. fileInfo.Delete() 문에서 UnauthorizedAccessException이 발생합니다. Resharper Test Runner에서 실행되지 않는 동일한 시스템의 다른 테스트 프로젝트에서이 파일을 삭제해도 문제가 없습니다.Resharper의 테스트 러너 유닛 테스트를 통해 단위 테스트에서 % ProgramFiles %의 파일을 삭제할 수없는 이유는 무엇입니까?

다른 곳으로 파일을 이동할 수 없습니다. ssapi.dll은 Visual SourceSafe 용 dll입니다. (예, 단위 테스트에서 뭔가 침략적입니다.)

두 가지 모두 동일한 사용자 (나)입니다. 작업 관리자를 통해 확인했습니다. 내 사용자 계정은 로컬 Administrators 그룹의 구성원입니다. 파일을 사용하여 수행 할 "권한 부여"를 결정하는 다른 요소는 무엇입니까?

해결 : 원래의 질문에 답할 수는 없지만 System.Security.Permissions framewok를 사용하여 테스트 목적으로 해결 방법을 찾았습니다. FileIOPermissionAccess.Read에 대한 요구 (Interop 호출의 경우) 파일을 필요로하는 응용 프로그램 (비 테스트) 코드에서 해당 파일이 없다는 시나리오가 필요한 해당 코드의 테스트에서 거부합니다. 이것은 당분간 작동해야합니다 (그리고 System.Security.Permissions 네임 스페이스에 대해 조금 배우는 것을 좋아합니다)!

답변

0

ReSharper가 테스트 러너를 별도의 프로세스로 실행 중이고 별도의 프로세스가 Windows ID를 사용하지 않고 권한이 더 낮은 다른 프로세스가있을 수 있습니다.

이 작업 관리자를 열고 확인하고 모든 사용자의 프로세스 표시를 선택할 수 있습니다.

1

사실 해결책은 아니지만이 문제를 다른 각도에서 수정하는 것이 좋습니다.

디렉토리를 % AppData %로 변경하는 것을 고려해 볼 수 있습니다 (주 응용 프로그램에서도이 변경을 수행해야 할 수도 있음).

UAC가 사용자 (또는 응용 프로그램 사용자)가 % ProgramFiles % 디렉터리를 사용하지 못하게 할 수 있기 때문에 문제가 해결 될 수 있으며 Vista로 이동할 때 잘 나타날 수 있습니다.

0

사용자 계정에 해당 폴더에 대한 전체 액세스 권한을 부여하여 문제를 해결할 수 있습니다.

Windows 탐색기에서 해당 폴더로 이동하십시오. 폴더를 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오. 보안 탭을 선택한 다음 편집 버튼을 클릭하고 직접 모든 권한을 추가하십시오. 예 - 잠재적 인 보안 문제 일지 모르지만 그 디렉토리에있는 파일을 변경해야하며 현재 수행중인 작업을 알고있는 것처럼 보이므로 작동해야합니다.

0

파일에 대한 감사를 활성화하고 이벤트 로그에서 오류 메시지를 확인할 수 있습니다. 한 번 로컬 보안 정책/로컬 정책/감사 정책 및 파일 자체에서 한 번씩 두 위치에서 감사를 설정해야합니다. 이렇게해도 문제가 해결되지는 않지만 적어도 문제를 진단하는 데 도움이됩니다.

0

UAC를 켠 상태에서 Vista 또는 Server 2008을 실행하고 있습니까? 그렇다면 테스트 러너 프로세스가 "상승 된"모드에 있지 않을 수 있습니다.

관련 문제