2014-10-03 5 views
2

내 Mac 응용 프로그램에서 바탕 화면의 내용을 읽을 수 있지만 파일을 삭제하려고 할 때마다 그렇게 할 수있는 권한이 없다고 말합니다. 사용자가 데스크톱에 대한 액세스를 승인 한 경우 파일을 삭제할 수 없습니까?샌드 박스 처리 된 Mac 앱에서 데스크탑의 파일을 삭제할 수 있습니까?

  • 샌드 박스는
  • 파일 액세스 켜지는 사용자가 선택한 파일에 대한 읽기/쓰기로 설정됩니다.
  • 보안 범위가 지정된 책갈피는 파일에 대한 읽기 액세스 권한을 가지고 있기 때문에 작동하며 권한 부여 프롬프트는 한 번만 표시됩니다. 나는 또한없는 성공을 가진 파일 관리자 쓰레기의 방법을 사용하여 시도

    [[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation 
                    source:desktopPath 
                   destination:@"" 
                     files:self.filesToDelete 
                     tag:nil]; 
    

    :

이 내가 삭제 사용하고있는 코드입니다.

Error Domain=NSCocoaErrorDomain Code=513 "“file.png” couldn’t be moved to the trash because you don’t have permission to access it." UserInfo=0x60000026a980 {NSURL=file:///Users/me/Desktop/file.png, NSUserStringVariant=(
Trash 
), NSUnderlyingError=0x600000257ca0 "The operation couldn’t be completed. (OSStatus error -5000.)"} 

그리고 실제 쓰레기 메서드 호출 : 여기

은 파일 관리자 쓰레기 메서드에서 반환하는 오류가 사용자가 열려있는 대화 상자를 통해 파일을 선택한 않는

[[NSFileManager defaultManager] trashItemAtURL:url resultingItemURL:nil error:&error]; 
+0

예, 사용자가 당신에게 권한을 부여하고 사용자가 그럼, 수동으로 할 수있을 때해야 당신의 응용 프로그램 (AFAIK) –

+0

생각, 왜 내가 그 오류를 얻고 무엇인가? 파일을 읽을 수 있다면 파일을 삭제할 수 없습니까? 오류 – Lizza

+1

위의 내용을 읽을 수 있으면 삭제할 수 있다는 의미는 아닙니다. 그 오류는 샌드 박스 오류를 나타내지 만 대답은 –

답변

2

, 또는 저장 대화 상자를 사용하여 앱을 통해 파일을 저장 한 경우 샌드 박스가있는 앱에서 파일을 삭제할 수 없습니다.

주로/tmp와 샌드 박스 컨테이너에있는 디렉토리를 원하는대로 수행 할 수있는 몇 가지 디렉토리가 있습니다.

https://developer.apple.com/library/mac/documentation/security/conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html

+0

입니다. 앞서 언급했듯이 사용자는 열린 대화 상자가있는 데스크탑을 선택합니다. 그렇지 않으면 바탕 화면의 내용을 읽을 수 없습니다. 데스크톱을 선택하지 않아도 열거자는 파일을 반환하지 않습니다. 그들이 데스크탑을 선택한 후에, 나는 데스크탑을 읽을 수 있으며, 나는 삭제할 수 없다. – Lizza

+1

예, 특정 파일 *을 선택하지 않으면 삭제할 수 없습니다. 또한 만든 파일을 삭제할 수 있습니다 –

+0

@JonGilkison [DaisyDisk] (https://itunes.apple.com/app/daisydisk/id411643860?l=en&mt=12)는 어떻게 작동합니까? 전체 디스크 또는 개별 폴더를 창에 놓기 만하면 모든 디스크 또는 개별 폴더를 삭제할 수 있습니다. –