2017-12-16 31 views
0

GUID를 내 StorageFile과 연결하여 동일한 소스에서 두 파일의 파생 여부를 쉽게 테스트 할 수 있습니다.uwp에서 System.Comment 또는 System.Subject 파일 속성 저장

I는 파일 속성에 GUID를 저장하기 위해 노력하고있어 :이 작동하지 않습니다

 private static string GuidProperty = "System.Comment"; // also tried "System.Subject". 

     static public async Task<Guid> GetGuidAsync(StorageFile file) 
     { 
      var properties = await file.Properties.RetrievePropertiesAsync(new string[] { GuidProperty }); 
      if (!(properties[GuidProperty] is string guidString)) { 
       throw new InvalidOperationException("Missing GUID on file."); 
      } 
      return new Guid(guidString); 
     } 

     static public async Task InitializeGuidAsync(StorageFile file) 
     { 
      var properties = await file.Properties.RetrievePropertiesAsync(new string[] { GuidProperty }); 
      properties[GuidProperty] = Guid.NewGuid().ToString(); 
      await file.Properties.SavePropertiesAsync(properties); 
     } 

. SavePropertiesAsync가되면 "COM 구성 요소 호출에서 반환 된 HRESULT E_FAIL 오류"라는 COMException이 throw됩니다.

파일은 사용자 정의 파일 확장명을 가진 app 디렉토리의 SQLite 데이터베이스입니다.

이 파일을 GUID로 태그 지정하려면 어떻게해야합니까?

P. 주위를 샅샅이 살펴본 후 ... 아마 문제는 내가 사용자 지정 파일 형식에 대한 파일 속성 처리기를 등록하지 않았다는 것입니다. 아직 어떻게하는지 모르겠습니다.

+0

'FileOpenPicker' 파일을 가져 오려고 시도한 다음'SavePropertiesAsync'를 호출합니다. 내 측면에서 작동합니다. 속성을 추가하려는 파일에 대한 자세한 정보를 공유 할 수 있습니까? –

+0

아래의 내 응답을보십시오. 너무 길어서 여기에 적합하지 않음) –

+0

위의 게시물을 편집하여 파일 유형에 대한 정보를 포함했습니다. –

답변

1

문제는 사용자 지정 파일 형식이 속성 저장을 지원하지 않는다는 것입니다.

속성은 파일 안에 저장되며 구현 한 속성 처리기를 사용하여 Windows 10에서 쓰고 읽습니다.

다음 페이지는 윈도우 10의 특성에 대해 설명 :이 응용 프로그램의 디렉토리에있을 때 문서 형식으로 SQLite는 사용과 관련하여 https://msdn.microsoft.com/en-us/library/windows/desktop/bb776859(v=vs.85).aspx

은, 불행하게도, SQLite는 파일 만 액세스 할 수 있습니다. 따라서 속성을 읽거나 쓰려면 파일을 app 디렉토리에 복사해야하기 때문에 파일 속성을 지원하는 것은 매우 비효율적입니다.