2009-09-25 9 views
6

Użyłem funkcji follwing zapisania danych w folderze aplikacji użytkownikazapisywania plików do folderu Common Application Data zaprzeczył

private void WriteToLog(string source, string method, string msg) 
{ 

string LogFile =Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\test";    
LogFile = LogFile + "\\Log.txt"; 
StreamWriter sw = new StreamWriter(LogFile, true); 
string str = DateTime.Now.ToString() + "source=" + source + "\t Method=" + method + "\t" + msg; 
sw.WriteLine(str); 
sw.Flush(); 
sw.Close(); 
} 

powyższy kod działa idealnie na kontach administratora, ale nie w ograniczonym kont użytkowników

+2

Kod będzie trochę czystszy, jeśli użyjesz Path.Combine. – epotter

Odpowiedz

13

Ograniczeni użytkownicy zwykle nie mają prawa do zapisu w folderach wspólnych dla wszystkich użytkowników. Czy na pewno nie chcesz pisać do innego folderu?

Na przykład można użyć Environment.SpecialFolder.ApplicationData (bieżący użytkownik, dane w roamingu) lub Environment.SpecialFolder.LocalApplicationData (bieżący użytkownik, dane inne niż mobilne).

+0

który folder wybieram dla ograniczonych kont użytkowników –

+2

Konwencjonalnie, używałbyś ApplicationData dla rzeczy, które są specyficzne dla użytkownika, ale niekoniecznie ograniczają się tylko do tego komputera, oraz LocalApplicationData dla rzeczy, które są specyficzne dla użytkownika, a także dla konkretnego komputera (np. zależy od zainstalowanego oprogramowania lub ścieżek instalacji). –

+0

Więc gdzie można przechowywać dane niezwiązane z użytkownikiem z ograniczonym prawem dostępu? –

Powiązane problemy