Как запросить разрешение на чтение/запись в папку %AppData%?C#

Место общения программистов C#
Ответить
Anonymous
 Как запросить разрешение на чтение/запись в папку %AppData%?

Сообщение Anonymous »

Я пытаюсь прочитать список элементов (и, возможно, записать в них) из папок LocalLow, где Steam сохраняет данные некоторых игр, в основном из любопытства, но мне не удалось найти способ даже запросить доступ без блокировки «System.UnauthorizedAccessException: Access to the path 'C:\Users\...»: я обновил свой манифест, включив в него (и пробовал с uiAccess="true"), но безрезультатно; вот мой код

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

using System.Diagnostics; //VS22 automatically added this reference during one of my attempts to make this work but I can't remember which it was used for, might not be necessary

class Program
{
static string gameAddress = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\LocalLow\Owlcat Games"; //... more specific environment locations, just an example

static string Locale = "";

void Main()
{

Console.WriteLine("check 1")

FileFetch();

Console.WriteLine("check 2")

}

public static async void FileFetch() //async for the future; checking available files during startup
{
try
{
string[] files = Directory.GetDirectories(gameAddress, "", SearchOption.AllDirectories);

foreach (string file in files)
{
Console.WriteLine(file);
Locale = file; //just grabbing something to see if I can edit it
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
Проблема, с которой я столкнулся, заключается в том, что я просто получаю разрешения на работу — доступ к локальным данным приложения программы никогда не вызывает подобных проблем, но попытка получить информацию о другой папке — это то, о чем я не могу найти никакой информации.
Изменить: Как отметил Фрокс, ошибка может быть вызвана тем, что Filestream пытается прочитать папку вместо реального файла; Я переключил свой код на использование Directory.GetDirectories(); чтобы достичь того, что я изначально пытался протестировать с помощью StreamReader, но мне все еще выдается исключение UnauthorizedAccessException при попытке манипулировать или даже создавать определенные файлы, поэтому разрешение разрешений все равно будет оценено. Протестировал Directory.CreateDirectory() на нескольких уровнях на моем рабочем столе, проблем не возникло, но создание внутри определенных папок, созданных Steam, и даже C:\Program Files\ вызывает ошибку.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ata-folder
Ответить

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

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

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

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

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