C# — Получение доступа к AppData C#


Разрешения на доступ к файлам File access permissions

Приложения UWP могут иметь доступ к определенным расположениям в файловой системе по умолчанию. Universal Windows Platform (UWP) apps can access certain file system locations by default. Приложения также могут получить доступ к дополнительным расположениям через средство выбора файлов или с помощью объявления возможностей. Apps can also access additional locations through the file picker, or by declaring capabilities.

Расположения, доступные всем приложениям The locations that all apps can access

Создавая новое приложение, вы по умолчанию получаете доступ к следующим расположениям в файловой системе: When you create a new app, you can access the following file system locations by default:

Папка установки приложения Application install directory

Папка, в которую устанавливается ваше приложение в системе пользователя. The folder where your app is installed on the user’s system.

Существуют два основных способа получения доступа к файлам и папкам в папке установки вашего приложения. There are two primary ways to access files and folders in your app’s install directory:

Так вы можете получить класс StorageFolder, соответствующий папке установки вашего приложения: You can retrieve a StorageFolder that represents your app’s install directory, like this:

Затем вы можете получить доступ к файлам и папкам каталога с помощью методов StorageFolder. You can then access files and folders in the directory using StorageFolder methods. В примере этот класс StorageFolder хранится в переменной installDirectory . In the example, this StorageFolder is stored in the installDirectory variable. Вы можете узнать больше о работе с пакетом приложения и папкой установки из примера сведений о пакете приложения на сайте GitHub. You can learn more about working with your app package and install directory from the App package information sample on GitHub.

Так вы можете загрузить файл непосредственно из каталога установки приложения с помощью URI приложения: You can retrieve a file directly from your app’s install directory by using an app URI, like this:

После завершения метод GetFileFromApplicationUriAsync возвращает класс StorageFile, который представляет файлу file.txt в папке установки приложения ( file в примере). When GetFileFromApplicationUriAsync completes, it returns a StorageFile that represents the file.txt file in the app’s install directory ( file in the example).

Префикс «ms-appx:///» в универсальном коде ресурса относится к папке установки приложения. The «ms-appx:///» prefix in the URI refers to the app’s install directory. Дополнительные сведения об использовании универсальных кодов ресурсов: Добавление ссылок на содержимое с помощью URI. You can learn more about using app URIs in How to use URIs to reference content.

Кроме того, доступ к файлам в каталоге установки приложения (в отличие от иных расположений) также можно получить, используя некоторые модели Win32 и COM для приложений универсальной платформы Windows (UWP) и функции стандартной библиотеки C/C++ из Microsoft Visual Studio. In addition, and unlike other locations, you can also access files in your app install directory by using some Win32 and COM for Universal Windows Platform (UWP) apps and some C/C++ Standard Library functions from Microsoft Visual Studio.

Папка установки приложения предназначена только для чтения. The app’s install directory is a read-only location. Невозможно получить доступ к папке установки с помощью средства выбора файлов. You can’t gain access to the install directory through the file picker.

Расположения данных приложения Application data locations

Папки, в которых ваше приложение может хранить данные. The folders where your app can store data. Эти папки (локальная, перемещаемая и временная) создаются при установке вашего приложения. These folders (local, roaming and temporary) are created when your app is installed.

Существуют два основных способа получения доступа к файлам и папкам из расположения данных вашего приложения. There are two primary ways to access files and folders from your app’s data locations:

Используйте свойства ApplicationData, чтобы получить папку данных приложения. Use ApplicationData properties to retrieve an app data folder.

Например, вы можете использовать ApplicationData.LocalFolder, чтобы получить класс StorageFolder, соответствующий локальной папке вашего приложения, следующим образом: For example, you can use ApplicationData.LocalFolder to retrieve a StorageFolder that represents your app’s local folder like this:

Если вы хотите получить доступ к перемещаемой или временной папке вашего приложения, вместо этого используйте свойство RoamingFolder или TemporaryFolder. If you want to access your app’s roaming or temporary folder, use the RoamingFolder or TemporaryFolder property instead.

Загрузив класс StorageFolder, соответствующий расположению данных приложения, вы получите доступ к файлам и папкам этого расположения с помощью методов StorageFolder. After you retrieve a StorageFolder that represents an app data location, you can access files and folders in that location by using StorageFolder methods. В примере эти объекты StorageFolder хранятся в переменной localFolder . In the example, these StorageFolder objects are stored in the localFolder variable. Больше об использовании расположений данных приложений можно узнать в рекомендации на странице Класс ApplicationData, а также скачав пример данных приложения с сайта GitHub. You can learn more about using app data locations from the guidance on the ApplicationData class page, and by downloading the Application data sample from GitHub.

Вы можете получить файл непосредственно из локальной папки своего приложения с помощью универсального кода ресурса (URI) приложения, как показано ниже. You can retrieve a file directly from your app’s local folder by using an app URI, like this:

После завершения метод GetFileFromApplicationUriAsync возвращает класс StorageFile, представляющий файл file.txt в локальной папке приложения ( file в примере). When GetFileFromApplicationUriAsync completes, it returns a StorageFile that represents the file.txt file in the app’s local folder ( file in the example).

Префикс «ms-appdata:///local/» в универсальном коде ресурса относится к локальной папке приложения. The «ms-appdata:///local/» prefix in the URI refers to the app’s local folder. Чтобы получить доступ к файлам в перемещаемой или временной папке приложения, используйте вместо этого «ms-appdata:///roaming/» или «ms-appdata:///temporary/». To access files in the app’s roaming or temporary folders use «ms-appdata:///roaming/» or «ms-appdata:///temporary/» instead. Дополнительные сведения об использовании универсальных кодов ресурсов приложения см. в разделе Загрузка файловых ресурсов. You can learn more about using app URIs in How to load file resources.

Кроме того, доступ к файлам в каталоге установки приложения (в отличие от иных расположений) также можно получить, используя некоторые модели Win32 и COM для приложений UWP и функции стандартной библиотеки C/C++ из Visual Studio. In addition, and unlike other locations, you can also access files in your app data locations by using some Win32 and COM for UWP apps and some C/C++ Standard Library functions from Visual Studio.

Невозможно получить доступ к локальной, перемещаемой и временной папкам с помощью средства выбора файлов. You can’t access the local, roaming, or temporary folders through the file picker.

Съемные устройства Removable devices

Кроме того, ваше приложение по умолчанию имеет доступ к некоторым файлам на подключенных устройствах. Additionally, your app can access some of the files on connected devices by default. Этот вариант подходит, если ваше приложение использует расширение «Автозапуск», чтобы запускаться автоматически при подключении к системе устройства, например камеры или USB-устройства флэш-памяти. This is an option if your app uses the AutoPlay extension to launch automatically when users connect a device, like a camera or USB thumb drive, to their system. Доступ вашего приложения к файлам ограничен определенными типами файлов, указанными с помощью объявлений сопоставлений типов файлов в манифесте приложения. The files your app can access are limited to specific file types that are specified via File Type Association declarations in your app manifest.

Конечно, вы также можете получить доступ к файлам и папкам на съемном устройстве, вызвав средство выбора файлов (с помощью FileOpenPicker и FolderPicker) и позволив пользователю выбирать файлы или папки, предоставляя приложению доступ к ним. Of course, you can also gain access to files and folders on a removable device by calling the file picker (using FileOpenPicker and FolderPicker) and letting the user pick files and folders for your app to access. Сведения об использовании средства выбора файлов см. в статье Открытие файлов и папок с помощью средства выбора. Learn how to use the file picker in Open files and folders with a picker.

Цукерберг рекомендует:  Как я сменил профессию и стал дизайнером

Подробнее о доступе к SD-карте или другим съемным устройствам рассказывается в статье Доступ к SD-карте. For more info about accessing an SD card or other removable devices, see Access the SD card.

Расположения, доступные приложениям UWP Locations that UWP apps can access

Папка скачиваемых файлов пользователя User’s Downloads folder

Папка, в которой по умолчанию сохраняются скачиваемые файлы. The folder where downloaded files are saved by default.

По умолчанию ваше приложение имеет доступ к файлам и папкам только в папке скачиваемых файлов пользователя, созданной этим приложением. By default, your app can only access files and folders in the user’s Downloads folder that your app created. Однако вы можете получить доступ к файлам и папкам в папке скачиваемых файлов пользователя, вызвав средство выбора файлов (FileOpenPicker или FolderPicker), чтобы пользователь мог осуществлять навигацию и выбирать файлы или папки, предоставляя приложению доступ к ним. However, you can gain access to files and folders in the user’s Downloads folder by calling a file picker (FileOpenPicker or FolderPicker) so that users can navigate and pick files or folders for your app to access.

Вы можете создать файл в папке скачиваемых файлов пользователя следующим образом: You can create a file in the user’s Downloads folder like this:

DownloadsFolder.CreateFileAsync перегружен таким образом, чтобы вы могли указать системе алгоритм действий, если в папке скачиваемых файлов уже существует файл с таким же именем. DownloadsFolder.CreateFileAsync is overloaded so that you can specify what the system should do if there is already an existing file in the Downloads folder that has the same name. После завершения эти методы возвращают класс StorageFile, соответствующий созданному файлу. When these methods complete, they return a StorageFile that represents the file that was created. В примере этот файл назван newFile . This file is called newFile in the example.

Вы можете создать вложенную папку в папке скачиваемых файлов пользователя следующим образом: You can create a subfolder in the user’s Downloads folder like this:

DownloadsFolder.CreateFolderAsync перегружен таким образом, чтобы вы могли указать системе алгоритм действий, если в папке скачиваемых файлов уже существует вложенная папка с таким же именем. DownloadsFolder.CreateFolderAsync is overloaded so that you can specify what the system should do if there is already an existing subfolder in the Downloads folder that has the same name. После завершения эти методы возвращают класс StorageFolder, соответствующий созданной вложенной папке. When these methods complete, they return a StorageFolder that represents the subfolder that was created. В примере этот файл назван newFolder . This file is called newFolder in the example.

Если вы создаете файл или папку в папке скачиваемых файлов, мы рекомендуем добавить этот элемент в FutureAccessList вашего приложения, чтобы в дальнейшем оно могло быстро получать доступ к этому элементу. If you create a file or folder in the Downloads folder, we recommend that you add that item to your app’s FutureAccessList so that your app can readily access that item in the future.

Доступ к дополнительным расположениям Accessing additional locations

Кроме расположений по умолчанию, приложение может получить доступ к дополнительным файлам и папкам с помощью объявления возможностей в манифесте приложения (см. статью Объявления возможностей приложения) или с помощью вызова средства выбора файлов, что позволяет пользователю выбирать файлы и папки, предоставляя приложению доступ к ним (см. статью Открытие файлов и папок с помощью средства выбора). In addition to the default locations, an app can access additional files and folders by declaring capabilities in the app manifest (see App capability declarations), or by calling a file picker to let the user pick files and folders for the app to access (see Open files and folders with a picker).

Приложения, объявляющие расширение AppExecutionAlias, имеют разрешения файловой системы начиная с каталога, откуда они запускаются в консольном окне, и далее вниз. App’s that that declare the AppExecutionAlias extension, have file-system permissions from the directory that they are launched from in the console window, and downwards.

В таблице ниже перечислены дополнительные расположения, к которым можно получить доступ, объявив возможности и используя связанные API Windows.Storage. The following table lists additional locations that you can access by declaring a capability (or capabilities) and using the associated Windows.Storage API:

Location Location Возможности Capability API Windows.Storage Windows.Storage API
Все файлы, к которым у пользователя имеется доступ. All files that the user has access to. Например: документы, изображения, фотографии, скачанные файлы, рабочий стол, OneDrive и т. д. For example: documents, pictures, photos, downloads, desktop, OneDrive, etc. broadFileSystemAccess broadFileSystemAccess

Это ограниченная возможность. This is a restricted capability. Доступ настраивается в разделе Параметры > Конфиденциальность > Файловая система. Access is configurable in Settings > Privacy > File system. Так как пользователи могут предоставить или отменить разрешение в любой момент в разделе Параметры, следует убедиться, что приложение устойчиво к этим изменениям. Because users can grant or deny the permission any time in Settings, you should ensure that your app is resilient to those changes. Если вы обнаружили, что у приложения нет доступа, вы можете предложить пользователю изменить этот параметр, предоставив ссылку на статью Доступ к файловой системе и конфиденциальность в Windows 10. If you find that your app does not have access, you may choose to prompt the user to change the setting by providing a link to the Windows 10 file system access and privacy article. Обратите внимание на то, что пользователь должен закрыть приложение, изменить параметр и перезапустить приложение. Note that the user must close the app, toggle the setting, and restart the app. Если он изменит параметр во время работы приложения, платформа приостановит ваше приложение, чтобы можно было сохранить состояние, а затем принудительно завершит его, чтобы применить новый параметр. If they toggle the setting while the app is running, the platform will suspend your app so that you can save the state, then forcibly terminate the app in order to apply the new setting. В обновлении за апрель 2020 года по умолчанию это разрешение включено. In the April 2020 update, the default for the permission is On. В обновлении октябрь 2020 по умолчанию оно отключено. In the October 2020 update, the default is Off.

Если приложение отправляется в Store, объявляющий эту возможность, потребуется дополнительно обосновать, зачем приложению нужна эта возможность и как планируется ее использовать. If you submit an app to the Store that declares this capability, you will need to supply additional descriptions of why your app needs this capability, and how it intends to use it.
Эта возможность подходит для интерфейсов API в пространстве имен Windows.Storage. This capability works for APIs in the Windows.Storage namespace. В разделе Пример в конце этой статьи показано, как включить эту возможность в приложении. See the Example section at the end of this article for an example of how to enable this capability in your app.

Неприменимо n/a
Документы Documents DocumentsLibrary DocumentsLibrary

Примечание. Необходимо добавить сопоставления типов файлов в манифест приложения, в котором указаны конкретные типы файлов, доступные приложению в этом расположении. Note: You must add File Type Associations to your app manifest that declare specific file types that your app can access in this location.

Используйте данную возможность, если ваше приложение: Use this capability if your app:
— поддерживает кросс-платформенный автономный доступ к конкретному содержимому OneDrive, используя допустимые URL-адреса OneDrive или идентификаторы ресурсов; — Facilitates cross-platform offline access to specific OneDrive content using valid OneDrive URLs or Resource IDs
— автоматически сохраняет открытые файлы в OneDrive пользователя при работе в автономном режиме. — Saves open files to the user’s OneDrive automatically while offline

KnownFolders.DocumentsLibrary KnownFolders.DocumentsLibrary
Музыка Music MusicLibrary MusicLibrary
См. также статью Файлы и папки в библиотеках музыки, изображений и видео Also see Files and folders in the Music, Pictures, and Videos libraries.
KnownFolders.MusicLibrary KnownFolders.MusicLibrary
Изображения Pictures PicturesLibrary PicturesLibrary
См. также статью Файлы и папки в библиотеках музыки, изображений и видео Also see Files and folders in the Music, Pictures, and Videos libraries.
KnownFolders.PicturesLibrary KnownFolders.PicturesLibrary
Видео Videos VideosLibrary VideosLibrary
См. также статью Файлы и папки в библиотеках музыки, изображений и видео Also see Files and folders in the Music, Pictures, and Videos libraries.
KnownFolders.VideosLibrary KnownFolders.VideosLibrary
Съемные устройства Removable devices RemovableDevices RemovableDevices

Примечание. Необходимо добавить сопоставления типов файлов в манифест приложения, в котором указаны конкретные типы файлов, доступные приложению в этом расположении. Note You must add File Type Associations to your app manifest that declare specific file types that your app can access in this location.

См. также статью Получение доступа к SD-карте Also see Access the SD card.

KnownFolders.RemovableDevices KnownFolders.RemovableDevices
Библиотеки домашней группы Homegroup libraries Требуется по меньшей мере одна из следующих возможностей: At least one of the following capabilities is needed.
— MusicLibrary, — MusicLibrary
— PicturesLibrary, — PicturesLibrary
— VideosLibrary — VideosLibrary
KnownFolders.HomeGroup KnownFolders.HomeGroup
Устройства сервера мультимедиа (DLNA) Media server devices (DLNA) Требуется по меньшей мере одна из следующих возможностей: At least one of the following capabilities is needed.
— MusicLibrary, — MusicLibrary
— PicturesLibrary, — PicturesLibrary
— VideosLibrary — VideosLibrary
KnownFolders.MediaServerDevices KnownFolders.MediaServerDevices
Папки UNC Universal Naming Convention (UNC) folders Требуется комбинация следующих возможностей: A combination of the following capabilities is needed.

Возможность домашней и рабочей сетей: The home and work networks capability:
— PrivateNetworkClientServer. — PrivateNetworkClientServer

Добавьте по меньшей мере одну возможность общедоступных сетей и Интернета: And at least one internet and public networks capability:
— InternetClient, — InternetClient
— InternetClientServer. — InternetClientServer

Если применимо, добавьте возможность учетных данных домена: And, if applicable, the domain credentials capability:
— EnterpriseAuthentication. — EnterpriseAuthentication

Примечание. Необходимо добавить сопоставления типов файлов в манифест приложения, в котором указаны конкретные типы файлов, доступные приложению в этом расположении. Note: You must add File Type Associations to your app manifest that declare specific file types that your app can access in this location.

Получение папки с помощью: Retrieve a folder using:
StorageFolder.GetFolderFromPathAsync StorageFolder.GetFolderFromPathAsync


Получение файла с помощью: Retrieve a file using:
StorageFile.GetFileFromPathAsync StorageFile.GetFileFromPathAsync

Пример Example

Этот пример добавляет ограниченную возможность broadFileSystemAccess . This example adds the restricted broadFileSystemAccess capability. Нужно не только указать возможность, но и добавить пространство имен rescap , а также добавить его в IgnorableNamespaces . In addition to specifying the capability, the rescap namespace must be added, and is also added to IgnorableNamespaces :

Полный список возможностей приложения приведен в разделе Объявления возможностей приложения. For a complete list of app capabilities, see App capability declarations.

Вопрос по windows-services, c# &#8211 Получить appdata \ путь к локальной папке в C # windows service

Я пытаюсь получить C:\Users\ \AppData\Local путь к папке с помощью

в службе Windows C #, но она возвращает другой путь

Кто-нибудь знает, как это правильно сделать?

Вы используете сервис под учетной записью пользователя? Если нет, служба будет использовать свой собственный профиль, как вы видите. Если эта служба & quot; вошла в & quot; пользователем, то вы можете передать папку в службу и обойти локальную проверку. В противном случае попробуйте запустить службу под учетной записью пользователя (или создайте для нее учетную запись).

c# — Как получить доступ к папке AppData

Я посмотрел на каждый вопрос в SO, но я не нашел решения для своей проблемы.

Я хочу получить доступ к папке Appdata следующим образом:

На самом деле я использую Spring Update, поэтому я могу настраивать каждую папку, но не AppData.

Я знаю, что причина в том, что папка скрыта.

Итак, кто-нибудь получил решение Access скрытых папок?

    2 1
  • 29 май 2020 2020-05-29 03:34:18
  • Anonymous

1 ответ

По умолчанию универсальные приложения Windows (приложения) могут получить доступ к определенным местам файловой системы. Приложения также могут получить доступ к дополнительным местам через сборщик файлов или объявить возможности

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

    Каталог установки приложений. Папка, где ваше приложение установлено в системе пользователей. Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;

Местоположение данных приложений. Папки, в которых ваше приложение может хранить данные. Эти папки (локальные, роуминг и временные) создаются при установке вашего приложения.

using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;

Загрузка файлов. Папка, в которой загруженные файлы сохраняются по умолчанию. Приложение может получить доступ только к файлам и папкам в папке «Файлы пользователей», созданной вашим приложением. Тем не менее, вы можете получить доступ к файлам и папкам в папке «Загрузка пользователей», вызывая сборщик файлов (FileOpenPicker или FolderPicker), чтобы пользователи могли перемещаться и выбирать файлы или папки для вашего приложения для доступа.

Как получить доступ к AppData папку

я посмотрел на каждый вопрос в SO, но я не нашел какое-либо решение моей проблемы.

Я хочу, чтобы получить доступ к AppData папку, как это:

На самом деле я использую Spring Update, так что я могу Задача каждой папки, но не в AppData.

Я знаю, что причина в том, что папка скрыта.

Так кто получил решение о доступе скрытых папок?

Универсальные приложения Windows (приложения) могут получить доступ к определенным местоположению файловой системы по умолчанию. Приложения могут также получить доступ к дополнительным местоположению через сборщик файла, или путем объявления возможности

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

    Применение каталога установки. Папка , в которой ваше приложение установлено на компьютере пользователя. Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;

Места данных приложений . Папки , где ваше приложение может хранить данные. Эти папки (локальные, роуминг и временные) создаются при установке приложения.

using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;

Загрузки папка пользователя . Папка , в которой Загруженные файлы сохраняются по умолчанию. Приложение может получить доступ только к файлам и папкам в папке Downloads пользователя , который создал приложение. Тем не менее, вы можете получить доступ к файлам и папкам в папке Downloads пользователя путем вызова файл сборщик (FileOpenPicker или FolderPicker) , так что пользователи могут перемещаться и выбирать файлы или папки для вашего приложения доступа.

C#, способы хранения настроек программы

Введение

В интернете приведено очень много способов хранения настроек программы, но все они как-то разбросаны, поэтому я решил их собрать вместе и расписать, как этим пользоваться.

C# и app.config

На хабре уже была посвящена этому тема, поэтому… перейти

C# и Properties.Settings

Информация о Properties.Settings

Организация Properties.Settings — это обычный xml файл, который можно найти в папке пользователя:

С:\ Users \ [user name] \ AppData \ Local \ [ (Project Name) or (AssemblyCompany) ] \ [name project_cashBuild] \ [AssemblyVersion] \ user.config

Для начала нам нужно создать такие переменные для Properties.Settings. Перейдем в Properties -> Settings.settings:

Я создал 3-и переменные и выбрал область их использования: 2- область пользователь и 1- приложение.

Различие между областями просты. Область приложения можно только читать, а пользователь — изменять и читать.

Вернемся к переменным:


  • Version — версия нашей программы. Определил ее строкой и областью приложение. Т.к. версия может содержать буквы (например, b — от beta). А область выбрал, чтоб не менялась наша версия приложения (т.к. AssemblyVersion редко кто использует).
  • Save_text — это переменная, куда мы будем сохранять наш текст.
  • open_sum — сколько раз мы открыли программу.

Теперь перейдем к коду

Результаты работы программы

Первый запуск, мы видим, что кол-во запусков равно 1. И теста в richTextBox1 нет.

Теперь напишем и сохраним текст.

При втором запуске мы видим, что текст сохранен, и кол-во запусков уже 2-ва.

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

C# и ini-файлы

С ini-файлами все на оборот, они лежат в папке рядом с программой, что позволяет пользователю изменить настройки вне-программы. Данный способ хорош, если настройки программы заносятся вручную. Например, эмулятор для запуска игры без лицензии (тотже revLoader).

Теперь перейдем к нашей теме. Для работы с таким типом файлов, нам нужно создать класс по работе с ним. Создаем класс, например «IniFile», подключаем пространство имен, которых нет:

А теперь разбираем по-порядку:

Теперь переходим в основную программу.

Результаты работы программы

При первом запуска, у нас нет файла config.ini. Поэтому при проверке возвращаются fasle и мы приравниваем окно к минимальным параметрам.

Меняем параметры окна и жмем «Применить»

Редактируем файл config.ini руками и жмем загрузить.

На этом все, в следующий раз опишу работу с xml файлами и с бинарными файлами.

Файловая система

Работа с папками

Windows 10 предоставляет новый API для работы с файлами. Основу этого API составляет пространство имен Windows.Storage , в котором и сосредоточен весь функционал для работы с файлами.

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

При работе с файлами и папками надо учитывать, что нам доступны определенные виды хранилищ файлов и папок, с которыми мы можем взаимодействовать. Файл в Windows 10 может быть сохранен в самых различных местах: на локальном компьютере, на съемном жестком диске или флешке, в облаке. Все типы папок вне зависимости от местонахождения представлены классом StorageFolder .

По умолчанию разработчик имеет доступ к следующим папкам в системе пользователя:

Папка, в которую установлено приложение. Эта папка содержит все файлы и каталоги, которые были созданы в проекте (это любые папки, в которых для файлов у свойства Build Action установлено значение «Content»). Так как эта папка полностью удаляется или пересоздается при каждом удалении/переустановке/обновлении приложения, то все сделанные изменения в этой папке будут удалены вместе с переустановкой или удалением приложения.

Чтобы получить эту папку, можно использовать следующее выражение:

Кроме того, мы можем напрямую обратиться к файлам из этой папки, используя специальные адреса Uri с префиксом «ms-appx:///»:

Каталоги, предназначенные для хранения данных. Это три папки: локальная (local), перемещаемая (roaming) и временная (temp). Эти папки создаются при установке приложения. Для получения доступа к этим папкам, можно использовать следующие выражения:

Также мы можем, используя специальные адреса Uri, обратиться к файлам из этих папок:

При использовании папки TemporaryFolder следует учитывать, что содержимое этой папки в любое время может быть удалено системой, либо самим пользователем через средства удаления временных файлов, как Disk Cleanup.

Класс StorageFolder, который представляет все эти папки, позволяет управлять ими через ряд своих методов:

GetFolderAsync() : возвращает вложенную папку по имени

GetFoldersAsync() : возвращает все вложенные папки

GetFilesAsync() : возвращает все вложенные файлы

GetFileAsync() : возвращает один файл по имени

CreateFileAsync() : создает новый файл

CreateFolderAsync() : создает новую папку

DeleteAsync() : удаляет текущую папку

GetItemsAsync() : возвращает все вложенные папки и файлы

GetItemAsync() : возвращает по имени либо файл, либо папку, в зависимости, что этому имени соответствует

GetParentAsync() : возвращает родительскую папку

OpenStreamForReadAsync() : открывает поток для чтения

OpenStreamForWriteAsync() : открывает поток для записи

RenameAsync() : переименовывает папку

С помощью свойств StorageFolder мы можем получить информацию о папке:

Attributes : возвращает атрибуты данной папки

DateCreated : возвращает дату создания папки

DisplayName : возвращает отображаемое имя папки

Name : возвращает имя папки

Path : возвращает полный путь к данной папке в файловой системе

Для примера создадим проект, в который поместим папку с файлами:

Здесь в проект добавлена папка Data, в которой есть два файла. Получим этим файлы в программе. Для этого в коде разметки xaml определим ListBox:

А в файле кода C# определим обработчик события загрузки страницы:

C# Как сделать правильную проверку доступа к файлу?


Доброго времени суток, у меня возникла проблема не могу понять как её решить
Мне необходимо что бы программа сканировала носитель проверяя текстовые файлы на доступ например к записи.

Если сижу под: скрытой учетной записью администратора (Windows 8.1)
UAC — Выключен.
То все найденные файлы с расширением .txt отправляются в файл : AthorizedAccessFile.log
(некоторые из них действительно доступны для записи.)

Если сижу под: обычным пользователем windows 7 ultimate x64
UAC — Включен.
То все найденные файлы с расширением .txt отправляются в файл : AthorizedAccessFile.log
(на самом деле файлы не доступны, вылазит: Trustedinstaller)

Почему у Microsoft все сделано через анальное отверстие?

Почему просто нельзя сделать, что бы было просто?

Почему на C# я легко могу проверить на доступность файлы например на веб сервере или обработать ошибки веб сервера, а с банальной проверкой файлов на WINDOWS все так сложно?

Как получить доступ к AppData папку

я посмотрел на каждый вопрос в SO, но я не нашел какое-либо решение моей проблемы.

Я хочу, чтобы получить доступ к AppData папку, как это:

На самом деле я использую Spring Update, так что я могу Задача каждой папки, но не в AppData.

Я знаю, что причина в том, что папка скрыта.

Так кто получил решение о доступе скрытых папок?

Универсальные приложения Windows (приложения) могут получить доступ к определенным местоположению файловой системы по умолчанию. Приложения могут также получить доступ к дополнительным местоположению через сборщик файла, или путем объявления возможности

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

    Применение каталога установки. Папка , в которой ваше приложение установлено на компьютере пользователя. Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;

Места данных приложений . Папки , где ваше приложение может хранить данные. Эти папки (локальные, роуминг и временные) создаются при установке приложения.

using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;

Загрузки папка пользователя . Папка , в которой Загруженные файлы сохраняются по умолчанию. Приложение может получить доступ только к файлам и папкам в папке Downloads пользователя , который создал приложение. Тем не менее, вы можете получить доступ к файлам и папкам в папке Downloads пользователя путем вызова файл сборщик (FileOpenPicker или FolderPicker) , так что пользователи могут перемещаться и выбирать файлы или папки для вашего приложения доступа.

класс C#, путь к% AppData%

класс path c# (7)

Я использую следующий код:

Однако я получаю исключение, указывающее на местоположение моего приложения:

Не удалось найти часть пути «D: \ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \% AppData% \ DateLinks.xml».

Я думал, что %AppData% должен найти относительный путь. Когда я нахожу Start|Run|%AppData% windows explorer отправляет меня в этот каталог.

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

Большое спасибо за любые советы,

Вы также можете использовать

для расширения переменной %AppData% .

Чтобы получить каталог AppData , лучше всего использовать метод GetFolderPath :

%AppData% — это переменная среды, и они не автоматически расширяются нигде в .NET, хотя вы можете явно использовать метод Environment.ExpandEnvironmentVariable для этого. Я бы все же настоятельно рекомендовал использовать GetFolderPath , потому что, как отмечает Йоханнес Рёссел в комментарии, %AppData% не может быть установлен в определенных обстоятельствах.

Наконец, чтобы создать путь, как показано в вашем примере:

Путь отличается, если вы говорите об ASP.NET.

Я не смог найти ни одного из значений «SpecialFolder», которые указывали на / App_Data для ASP.NET.

Вместо этого вам нужно сделать это:

(Примечание: вам не нужно свойство Current (Текущее) в MVC-контроллере)

Если еще один «абстрактный» способ попасть в App_Data с удовольствием услышит, как это сделать.

Просто хотел поделиться другим способом доступа к папке «App_Data» в моем приложении mvc, если кому-то это нужно.

ЛУЧШИЙ способ использования каталога AppData, IS использовать метод Environment.ExpandEnvironmentVariable .

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

Помните, что некоторые пользователи набирают %AppData% , некоторые %appdata% и некоторые %APpData% Вы не хотите, чтобы в итоге:

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

В .net2.0 вы можете использовать переменную Application.UserAppDataPath

Я не думаю, что включение% AppData% в такой строке будет работать.

appdata

Как получить путь к %APPDATA%каталогу в Python?

Это глупый вопрос, но как добавить папку App_Data в проект? у меня есть xsd-файл, который я хочу включить в проект.

Как запустить программу с собственной пользовательской папкой appdata с помощью скрипта Visual Basic. Я пытался сделать это с помощью пакетного…

При создании приложения, предназначенного для многих версий Windows, рекомендуется определить, где должны храниться данные конкретного приложения. Конкретно: Данные приложения (например,…

Я попытался получить доступ к папке APPDATA, которая отлично работает со следующим кодом (Запуск от имени текущего пользователя входа): Set…

Я пытаюсь скачать файл char* appdata = getenv(«APPDATA»); lpURLDownloadToFile URLDownloadToFile; HMODULE hUrlmon = LoadLibrary(«URLMON.DLL»); URLDownloadToFile = (lpURLDownloadToFile)GetProcAddress(hUrlmon, «URLDownloadToFileA»); URLDownloadToFile(0, «http://example.com/test.zip»,appdata+»test.zip»,…

Я хочу проверить файл и скопировать его в другой каталог, если он существует. К сожалению, файл существует в папке AppData….

Недавно я начал участвовать в разработке Android, и я узнал, что Android Studio была доступна вопреки Eclipse. Поэтому я загрузил…

Я адаптировал программу, чтобы перестать нуждаться в правах администратора или записи файлов данных в каталог установки programfiles. Эти файлы не…

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

I have 2 Drive C and D. C is 128 GB SSD and D is 1 TB HDD. Win 10…

У меня есть табликс в отчете SSRS: При запуске отчета возвращается только 1 запись! Я сделал трассировку sql server, и…

Я новичок в использовании операторов $pdo, поэтому может быть что-то простое, что я еще не читал php.net. Я получаю дубликаты…

У меня есть настольное приложение в C#, которое хранит свои данные в XML-файле. Когда приложение установлено в папке «Program Files»,…

Цукерберг рекомендует:  Обучение - c# приложение и fiddler
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих