2012-11-07 2 views
3

저는 프로젝트의 시작 단계에 있으며 어떤 기술을 사용해야하는지 궁금합니다. 약간의 연구에서 WinRT API가 유쾌하고 UI에서 타일 그리드 개념을 정말 좋아한다는 것을 발견했습니다.Windows 8 응용 및 파일 시스템에 대한 액세스

유일한 문제는 내 앱에서 중요한 데이터 (중요한 데이터)를 생성한다는 것입니다. 중요한 데이터는 로컬 시스템의 어딘가에 저장해야합니다. '어딘가'란 말은 OS가 아닌 다른 파티션을 사용한다는 의미입니다.

그래서이 간단한 코드를 사용해 보지 않으시겠습니까?

E_ACCESSDENIED 때문에, 그 이유. 윈도우 8은 "Access Denied"라는 비명을 지르는 얼굴을 때렸다.

내가 좋아하는 방식으로 데이터를 저장할 수있는 방법이 있습니까? Win8도 역시 h4x0r입니다.

아니요, "데스크톱 응용 프로그램 만들기"는 정답이 아닙니다.

답변

3

당신이 알아야 할 것 file access and permissions in Windows Store Apps.

모든
+0

감사합니다. 그러나 Windows가 충돌 할 때 무엇입니까? 모든 파일은 시스템 파티션에 있습니다. - '응용 프로그램 설치 디렉토리', '응용 프로그램 데이터 위치'- sysadmin이 복구를 수행 할 때 모든 위치가 지워집니다. – mszubart

+0

복구를 수행하면 데이터 지우기에 대해 아무 것도 할 수 없으며 이는 좋은 일입니다. 앱이 갑자기 사용 가능한 공간을 모두 사용했다면 앱을 삭제하면 모든 데이터가 사라집니다. 개발자는 "이봐, 내 데이터가 중요하지 그래서 그것을 제거하지 마라."라고 말할 권리가 없습니다. 시스템 복구도 마찬가지입니다. 그것은 개발자가 아닌 사용자의 기계입니다. – ZombieSheep

+0

그것은 산업 자동화입니다. 이 데이터는 보고서를 생성하는 데 사용됩니다. 그래서 다른 파티션에서 원한다면 sysadmin은 복원 중에 OS 파티션을 지울 수 있습니다. 물론 주 서버에 데이터를 보관할 수 있습니다.하지만 서버 연결은 느리며 데이터가 운영자 컴퓨터에 캐시되는 이유입니다. 나는 나의 상사를 위해 나의 대답을 가지고있다 : "나는 윈도우 8 스타일로 원격 측정 응용 프로그램을 할 수 없다". 그것은 간단하고 분명하다 :) – mszubart

3

먼저 구성 데이터를 저장할 때, 두 가지 옵션이 있습니다 : 그것은 클라우드 또는 도메인에 저장 될 수 있도록 로밍 프로필 공간을 사용합니다

Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 

이 프로필

Windows.Storage.ApplicationDataContainer settings = Windows.Storage.ApplicationData.Current.LocalSettings; 

어떤 로컬 프로필 공간을 사용합니다

물론 그들은 둘 다 귀하의 사용자 % appdata % 아래에 저장되지만 당신이 FolderPicker를 사용하여 위치를 선택해야

첫째 : 내가 제대로 모든 :

그래서, 응용 프로그램 데이터를 다른 파티션에 저장하고 싶은 이해한다면 로밍 하나는 실제로 서로 연관됩니다

var folderPicker = new Windows.Storage.Pickers.FolderPicker(); 
//Add some other yada yada to make the picker work as needed 
StorageFolder folder = await folderPicker.PickSingleFolderAsync(); 

그런 다음 당신은이 폴더

StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder); 
을 사용할 수있어 기억하는 액세스 목록에서 선택한 폴더를 둘 필요가

그런 식으로 응용 프로그램/시스템은 앞으로이 폴더를 사용할 수 있음을 추적합니다. 선택한 폴더는 액세스 권한이있는 파일 시스템의 어느 위치 에나있을 수 있습니다. 다시 앱이 사용자를 시작하는 다음 번에 선택한 폴더를 얻을 수 wan't 경우

마지막으로 단순히 반대를 수행

StorageFolder folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync("TargetFolderToken",AccessCacheOptions.FastLocationsOnly); 

값은 FastLocationsOnly는 로컬 드라이브를 반환된다는 것을 의미합니다. "TargetFolderToken"은 FutureAccessList에 폴더를 저장할 때 사용한 것과 동일한 식별자입니다.

관련 문제