2013-08-12 2 views
4

Моя программа обрабатывает все файлы, указанные пользователем. После предпочтительного сохранения измененного файла в каталог исходного файла. StorageFolder.GetFolderFromPathAsync способ возвращает "Access Denied".
Невозможно добавить ассоциации типов файлов в манифест, потому что после обработки файлы сохраняют их расширение. И какой файл (с любым расширением) пользователь выбирает сказать невозможным. Код, в котором возникает ошибка.Сохранение файлов в приложениях Windows Store

internal async static void SetFile(List<byte> byteArray , StorageFile file) 
    { 
     try 
     { 
      string path = Path.GetDirectoryName(file.Path); 
      StorageFolder newFolder = await StorageFolder.GetFolderFromPathAsync(path); 
      StorageFile newFile = await newFolder.CreateFileAsync(string.Format(@"crt{0}", Path.GetFileName(file.Name)), CreationCollisionOption.FailIfExists); 
      Stream stream = await file.OpenStreamForWriteAsync(); 
      BinaryWriter writer = new BinaryWriter(stream); 
      writer.Write(byteArray); 
      writer.Flush(); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

Файл StorageFile - файл, указанный пользователем. Я пытаюсь создать новую папку на основе пути исходного файла. Ошибка - «Отказано в доступе». Чтобы получить доступ к этой папке, я должен зарегистрировать расширения файлов, которые я использую. Это невозможно. Скажите, пожалуйста, можем ли мы обойти это? Или что можно сделать в моем случае?

+0

Из того, что я понял: у вас есть файл, выполните некоторые манипуляции с ним и сохраните его в том же месте, но с небольшим изменением имени? – VasileF

+0

Да, именно так –

ответ

1

Насколько я знаю, вы не можете сохранить файл на ПК, если только не приступите к использованию Save Picker, в случае приложения Windows Store. Вот почему вы можете получить ошибку Access Denied. Нажмите здесь для File Access and Permissions.

С другой стороны, вы можете сохранять файлы всегда в системном местоположении, предназначенном для самого приложения, в ApplicationData.LocalFolder.

Вы можете установить дополнительные возможности для своего приложения, чтобы он мог получить доступ к съемным устройствам.

Я не знаю, что это другие.

+0

Большое спасибо! –

+0

Объясните, пожалуйста, больше. Как часто изменяется GUID приложения? Когда вы компилируете новую версию или это зависит от того, что другое? Из-за этой папки приложения изменения. Если данные будут потеряны, было бы плохо. –

+0

До сих пор я не пробовал, честно говоря, но некоторые люди сказали мне, что данные приложения, хранящиеся в LocalFolder, не будут стерты, если вы сделаете обновление. – VasileF

Смежные вопросы