2013-06-05 10 views
12

Mam dziwny problem: moja aplikacja WPF .NET 4.0 zapisuje dane w folderze ApplicationData.Environment.SpecialFolder.ApplicationData zwraca nieprawidłowy folder

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myProgram\\"; 

99,9% przypadków działają świetnie, ale na niektórych komputerach zwraca złego folderu - zamiast wracać folder użytkownika powraca inny folder:

C:\Users\<user>\AppData\Roaming\myProgram\ --correct 
C:\Users\s\AppData\Roaming\myProgram\  --wrong 

niewłaściwy folder ma żadnego zapisu/odczytaj uprawnienia, więc mój program nie działa.

Wygląda na to, że program działa pod innym użytkownikiem, ale jeśli sprawdzę Menedżera zadań, to użytkownik jest zalogowany.

Problem wydaje się występować w przypadku użytkowników domeny z niewielkimi uprawnieniami.

+0

Czy aplikacja jest aplikacją sieci Web? –

+0

Nie, to aplikacja wpf, framework 4.0 –

+14

Przepraszamy za bycie pedantyczną, ale ** użyj Path.Combine! ** –

Odpowiedz

8
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

czy tworzysz plik tekstowy do napisania?

a także należy przypisać zmienną, na przykład:

String path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

if(File.Exists(path + "filetowrite.log")) 
{ 
    ...................... 
} 

również przed sprawdzenie pliku, sprawdź czy existe katalog być bardziej pewny. pozdrowienia, mam nadzieję, że ci pomogę.

+6

Zawsze używaj Path.Combine, nigdy "+" jak Ty nie wiem, czy ścieżka kończy się na backslahs (lub używa backslashes w ogóle). – nivs1978

Powiązane problemy