Невозможно получить доступ к указанному файлу или папке (UNABLE_TO_MASK_PATH). Убедитесь, что элемент не помечен атрибутC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно получить доступ к указанному файлу или папке (UNABLE_TO_MASK_PATH). Убедитесь, что элемент не помечен атрибут

Сообщение Anonymous »

В настоящее время я работаю над приложением WinUI 3 (Windows App SDK), в котором мне нужно отображать файлы и ярлыки рабочего стола пользователя. Моя цель — прочитать как рабочий стол текущего пользователя, так и общедоступный рабочий стол (

Код: Выделить всё

CommonDesktopDirectory
) и извлекайте их значки с помощью API Windows.Storage.
Хотя чтение рабочего стола текущего пользователя работает отлично, мое приложение аварийно завершает работу при попытке доступа к общедоступному рабочему столу.
Я пытался добавить в свой Package.appxmanifest и вручную включил переключатель конфиденциальности файловой системы для моего приложения в Windows Настройки.

Код: Выделить всё

private async Task LoadRealIconsAsync()
{
string publicDesktop = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);

try
{
StorageFolder currentFolder = await StorageFolder.GetFolderFromPathAsync(publicDesktop);
var folders = await currentFolder.GetFoldersAsync();

foreach (StorageFolder folder in folders)
{
StorageItemThumbnail thumbnail = await folder.GetThumbnailAsync(ThumbnailMode.ListView, 64, ThumbnailOptions.UseCurrentScale);
BitmapImage bitmapIcon = new BitmapImage();

if (thumbnail != null) { await bitmapIcon.SetSourceAsync(thumbnail); }

DesktopFiles.Add(new DesktopItem { Name = folder.Name, FileIcon = bitmapIcon });
}

var files = await currentFolder.GetFilesAsync();

foreach (StorageFile file in files)
{
if (file.Name.ToLower() == "desktop.ini") continue;

StorageItemThumbnail thumbnail = await file.GetThumbnailAsync(ThumbnailMode.ListView, 64, ThumbnailOptions.UseCurrentScale);
BitmapImage bitmapIcon = new BitmapImage();

if (thumbnail != null) { await bitmapIcon.SetSourceAsync(thumbnail); }

string displayName = file.Name;
if (displayName.EndsWith(".lnk", StringComparison.OrdinalIgnoreCase) ||
displayName.EndsWith(".url", StringComparison.OrdinalIgnoreCase))
{
displayName = System.IO.Path.GetFileNameWithoutExtension(displayName);
}

DesktopFiles.Add(new DesktopItem { Name = displayName, FileIcon = bitmapIcon });
}
}
catch (Exception ex)
{
DesktopFiles.Add(new DesktopItem
{
Name = $"{System.IO.Path.GetFileName(publicDesktop)}: {ex.Message}",
FileIcon = null
});
}
}
но я получаю сообщение об ошибке:

Невозможно получить доступ к указанному файлу или папке (UNABLE_TO_MASK_PATH).
Проверьте, что элемент не отмечен системными или скрытыми атрибутами
файла.

есть ли обходные пути?>
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»