Метро-приложение Windows 8 обращается к произвольному пути к файлу

В метро следующие коды будут генерировать исключение:

String fileName = @"C:\Test\dd\ccc.jpg";
StorageFile file = await StorageFile.GetFileFromPathAsync(fileName);

Однако, даже если я проверю все в возможностях, также было добавлено средство выбора файлов и разрешены все типы файлов. Я все еще не могу получить доступ к этому файлу, будет выдано то же исключение.

Кто-нибудь знает, как читать файл в произвольном пути к файлу? Возможно ли это в приложении в стиле метро.


person Chang    schedule 24.10.2011    source источник


Ответы (1)


Невозможно. Вы можете получить доступ к библиотекам — изображениям, документам, видео — и если пользователь поместит эту папку в одну из этих библиотек (используя проводник Windows на рабочем столе), все готово. Вы даже можете написать настольный exe-файл, который поместит папку в библиотеку, но вы не можете запустить этот exe-файл самостоятельно или быть уверенным, что пользователь не изменил библиотеки вручную.

Найдите в SHCreateItemInKnownFolder отправную точку для API-интерфейсов оболочки для работы с библиотекой. Я не пробовал вызывать эти API со стороны Metro; вы можете видеть, помогают ли они, но я уверен, что они не будут доступны. Если вам не нравится COM-взаимодействие с API-интерфейсами оболочки, вы можете посмотреть исходный код Windows API Code Pack. - Я бы не хотел связывать все это с приложением Metro, но вы можете скопировать его части в свое приложение.

person Kate Gregory    schedule 24.10.2011