2010-11-03 2 views
1

У меня есть приложение C#, которое я написал. Все работает на 100%, кроме одного метода. Если UAC включен, я не могу сохранить файл, даже файл Settings.config. Я пробовал использовать файл манифеста, без везения. Что я делаю не так?C# Разрешение для сохранения файла

public static void UpdateVersionText() 
{ 
    var wc = new WebClient(); 
    var utf8 = new UTF8Encoding(); 
    var list = utf8.GetString(wc.DownloadData("https://www.agentsarea.co.uk/photolibrary/photos/data/version.txt")); 
    wc.Dispose(); 
    Properties.Settings.Default.version = list.Trim(); 
    Properties.Settings.Default.Save(); 
} 
+0

Можете ли вы предоставить исключение stacktrace для просмотра? –

+0

Не исключение. Все компилируется и запускается на машине без UAC. При новой установке Vista или WIn7 с UAC в настройках никогда не сохраняются. –

+0

Я не думаю, что есть необходимость уменьшить этот вопрос. Это очень правильный вопрос. Пусть тот, кто никогда не пытался сохранить файлы в каталоге \ Program files \, выбрал первый downvote. –

ответ

6

Сохраните файл в лучшем месте. Вероятно, вы сохраняете текущий каталог, находящийся в/Program files /, который обычный пользователь не должен писать. Попробуйте сохранить% appdata% (каждый пользователь Windows имеет свой собственный каталог) или% allusersprofile% (все пользователи используют один и тот же каталог).

Вы получаете либо путь, вызвав следующий:

AppData для текущего пользователя:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

Все пользователи каталог профиля:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 
+0

Спасибо МНОГО! Это была одна из моих проблем, пытаясь сохранить ее в каталоге Program Files. Моя другая проблема заключалась в глупости. Я никогда не называл мой метод сохранения. Я чувствую себя так ужасно глупо. –

+0

@Dremation: LOL, который предотвратит исключения, хотя :-). Мы все были там, поэтому не чувствуйте себя глупо. –

0

Где вы пытаетесь его сохранить в файловой системе? Если вы пытаетесь внутри Program Files, вы будете закрыты UAC. Попробуйте приложения AppData или My Documents, и вам повезет больше.

+0

Изначально я пытался сохранить в Environment.GetFolderPath (Environment.SpecialFolder.CommonProgramFiles) + "\\ PPPL \\ Data \\ version.txt" Но это не удалось, поэтому я попытался сохранить файл настроек приложения. –

+0

@Dremation: CommonProgramFiles также требует возвышения ... Остановите попытку сохранить его там, где Windows хочет защитить исполняемые файлы ... Вы должны быть в порядке, когда пытаетесь использовать доступные для пользователя пути –

+0

Я попытался сохранить в C: \ Users \ Dremation \ AppData \ Роуминг \ PPPL \ Данные без везения. Файл Solution содержит 2 проекта. 1 сохраняет данные в sqlite db без проблем в одном каталоге. Но второе приложение не может сэкономить. –

1

В дополнение к другим комментариям, вы следует рассмотреть возможность записи настроек на IsolatedStorage.

Смежные вопросы