System.UnauthorizedAccessException при создании файла в папке приложения - PullRequest
0 голосов
/ 16 октября 2011

У меня есть приложение Winforms, которое должно создавать записи в определенный файл конфигурации во время использования.Как только я использую режим отладки, этот файл может быть создан и записан в него, но как только я создаю Setup Project и фактически устанавливаю приложение, я не могу получить доступ со следующим исключением.

Файл конфигурации находится в том же каталоге, что и программа (в программеФайлы)

Код, который я использую для чтения / записи.

public static string[] GetDefaultConfigFile(string path)
{
    string[] res = {};
    if (File.Exists(GetInternalFileName(path)))
    {
        using (StreamReader tr = new StreamReader(GetInternalFileName(path)))
        {
            res = tr.ReadToEnd().Split(';');
        }
    }
    return res;
}

public static void SaveDefaultConfigFile(string fileName, string path)
{
    using (var tw = new StreamWriter(GetInternalFileName(path)))
    {
        tw.Write(fileName);
        tw.Close();
    }
}

private static string GetInternalFileName(string path)
{
    return path + "\\setup.config";
}

1 Ответ

1 голос
/ 16 октября 2011

Возможно, учетная запись, используемая для запуска этого кода, не имеет достаточных прав для записи в указанную папку (Program Files).Если вы работаете под Windows 7 или Vista, обычные пользователи не имеют права на запись в эту папку.В этом случае вы можете использовать пользовательскую папку c:\users\username для хранения настроек конфигурации.

Также я бы упростил:

public static string[] GetDefaultConfigFile(string path)
{
    return File.ReadAllText(path).Split(';');
}

public static void SaveDefaultConfigFile(string fileName, string path)
{
    File.WriteAllText(path, fileName);
}

private static string GetInternalFileName(string path)
{
    return Path.Combine(path, "setup.config");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...