문제

나는 목록보기 컨트롤에 주어진 폴더의 내용을 보여주는 메트로 응용 프로그램에서 작업하고 있습니다.디렉터리 클래스가 필요하지 않다고 판단하여 프레임워크에서 완전히 제거했습니다.

나는 메트로 스타일 응용 프로그램에서 기음#에 파일을 열거 할 교체를 찾고 있어요.나는 미시에 의해 제공되는 모든 열거 샘플을 확인했으며,그들은 모두 윈도우 라이브러리를 사용하여 열거하는 것 같습니다. KnownFolders 클래스,같은 것:

StorageFolder picturesFolder = KnownFolders.PicturesLibrary;

그리고 전화 GetFilesAsync() 또는 GetFoldersAsync() 당신의 필요에 따라 방법.난 단지 사진이나 음악 라이브러리 내부에 열거하고 싶다면 이들은 모두 금입니다.그러나 라이브러리에 포함되지 않은 디렉토리에 있는 파일을 열거하려고 합니다.

이것이 윈트에서 어떻게 가능한지 아는 사람이 있습니까???

도움이 되었습니까?

해결책

당신은 디자인에 의해,매우 메트로 애플 리케이션을위한이 지역에서 제한됩니다.아이디어는 지하철 응용 프로그램은 액세스 할 신뢰할 수있는 것들에 대한 액세스 권한을 부여한다는 것입니다,그래서 당신은 할 수 있습니다:

  1. 응용 프로그램에 특정한 로컬 저장소에 액세스
  2. 소수의 잘 알려진 저장 위치에 액세스하거나
  3. 특별히 부여된 위치에 액세스합니다.

한 번 보세요 http://msdn.microsoft.com/en-us/library/windows/apps/hh464959.aspx 당신이 액세스 할 수 있습니다 무엇에 대한 아이디어를 얻을 수 있습니다.

다른 팁

에서 http://tirania.org/blog/archive/2011/Sep-15.html :

전체 닷넷 프레임워크를 사용하고 있습니다.하지만 그들은 개발자들에게 더 작은 부분 집합을 노출하기로 결정했습니다. 윈도우 8 에 대한 새로운 비전을 추진합니다.

그리고 이 새로운 비전에는 안전/샌드박스 시스템과 비동기식 시스템이 포함됩니다 프로그래밍이 때문에 직접 파일 시스템 액세스 또는 소켓 액세스 및 동기식 액세스 및 동기식 액세스 및 동기식 액세스 및 동기식 액세스 및 동기식 액세스 및 동기식 액세스 노출되지 않습니다.

이제,당신은 내가"노출"이라고 말했고"사라지지 않았다"는 것을 알 수 있습니다.

그들은 단지 컴파일러에게 당신은 지하철 프로파일을 대상으로 할 때.그래서 응용 프로그램은하지 않습니다 실수로 파일을 호출합니다.예를 들어 만듭니다.하지만 런타임에 전체 클래스 라이브러리를 로드할 것입니다. 파일생성,그래서 내부적으로,같은 것을 호출 할 수 있습니다 파일만들기,그것은 그것에 액세스 할 수 없습니다 단지 당신입니다.

이 분할은 과거에 수행 된 것과 유사합니다 실버 라이트,모든 아피가 노출되지 않은 곳,그리고 엠스코리브가 있던 곳 응용 프로그램이 시스템을 보장 할 필요가 없다는 권한을 부여 안전.

당신은 당신이 몇 가지 트릭을 사용할 수 있다고 생각할 수도 있습니다. 컴파일러 참조 대신 라이브러리 또는 리플렉션을 사용하여 이 문제를 해결하려면 어떻게해야합니까?그러나 그 모든 사용은 앱 스토어 검토 응용 프로그램에 의해 잡힐 당신은 늘 할 수 마이크로 소프트의 스토어를 통해 응용 프로그램을 게시 할 수 있습니다.

당신은 여전히 당신이 당신의 시스템에하시기 바랍니다 어떤 추한 해킹을 할 수 있습니다.그것은 단지 늘 앱 스토어를 통해 게시 할 수 있습니다.

그래서 아마 공식적인 방법이 없습니다,그리고 비공식적 인 방법이 있다면,그것은 아마 앱 스토어에 허용되지 않습니다.

그냥 일반적으로이 의미가 있습니다:난 그냥 내 하드 드라이브를 스캔하고 내"예산을 찾을 수 있도록 겉으로는 합법적 인 응용 프로그램을 다운로드하고 싶지 않아요.내 은행/신용 정보가 포함 된 스프레드 시트.

편집:파일 선택기를 통해 보안 파일/폴더에 대한 임시 액세스 권한을 부여 할 수 있지만 사용자가 명시 적으로 호출하고 선택해야합니다.

당신은 사용할 수 있습니다 저장소 폴더폴더 가져오기 를 얻을 수있는 방법 저장 폴더 경로의 인스턴스.

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"C:\...");

하지만 컴퓨터의 모든 경로에 대해 이 작업을 수행할 수 있는 권한이 없을 수 있습니다.

비슷한 상황.구문 분석 크롬 북마크 파일에 액세스하고 싶었다.처음에 파일 오픈 피커를 사용했지만,반환하는 파일은 미래 액세스 목록에"캐시"될 수 있습니다.)를 추후 검색할 수 있습니다.

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