2013-06-05 3 views
12

Tôi gặp vấn đề lạ: ứng dụng .NET 4.0 WPF của tôi đang lưu dữ liệu vào thư mục ApplicationData.Environment.SpecialFolder.ApplicationData trả về thư mục sai

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

99,9% các trường hợp đang làm việc rất tốt, nhưng trên một số máy tính nó sẽ trả về thư mục sai - thay vì trả lại thư mục người sử dụng nó sẽ trả về một thư mục khác:

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

Thư mục sai không có ghi/đọc quyền để chương trình của tôi không hoạt động.

Dường như chương trình đang chạy dưới một người dùng khác, nhưng nếu tôi kiểm tra Trình quản lý tác vụ thì người dùng đó đã đăng nhập.

Sự cố dường như xảy ra với người dùng miền có ít quyền.

+0

Bạn có ứng dụng Web App không? –

+0

Không, đó là một ứng dụng wpf, khuôn khổ 4.0 –

+14

Xin lỗi vì đã được sử dụng, nhưng ** sử dụng Path.Combine! ** –

Trả lời

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

bạn có tạo tệp văn bản để viết mà bạn muốn không ??

và cũng có thể bạn cần phải gán một biến, ví dụ:

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

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

cũng trước để kiểm tra các tập tin, kiểm tra xem thư mục existe để chắc chắn hơn. lời chúc mừng tôi hy vọng sẽ giúp bạn.

+6

Luôn luôn sử dụng Path.Combine, không bao giờ "+" như bạn không biết nếu con đường kết thúc bằng một backslahs (hoặc sử dụng dấu gạch chéo ngược ở tất cả). – nivs1978