Tôi đang cố gắng lặp lại thông qua SpecialFolder (Environment. SpecialFolder.StartMenu và Environment. SpecialFolder.DesktopDirectory) trong ứng dụng của mình và nó hoạt động để cài đặt tiếng Anh.
Nhưng tôi gặp phải vấn đề sau khi cài đặt không phải tiếng Anh:
Khi tôi sử dụng đường dẫn không được bản địa hóa, đối với bất kỳ thư mục con nào tôi cố truy cập, tôi nhận được Truy cập trái phépNgoại lệ
Nếu tôi bản địa hóa kết quả của Environment.GetFolderPath và cố gắng lấy danh sách các thư mục con, tôi sẽ nhận được trên đường dẫn đã bản địa hóa Thư mụcKhông tìm thấyNgoại lệ. Ví dụ về đường dẫn bản địa hóa:
nguyên bản -> C:\Users\tony\AppData\Roaming\Microsoft\Windows\Start Menu
nội địa hóa -> C:\Utilisateurs\tony\AppData\Roaming\Microsoft\Windows\Menu Démarrer
Tôi sử dụng Environment.GetFolderPath để lấy thư mục và sau đó tìm kiếm vị trí của một tệp cụ thể bằng cách sử dụng:
tĩnh riêng IEnumerable LocateAppShortcut(string dir)
{
foreach (thư mục chuỗi trong Directory.GetDirectories(dir))
{
foreach (tệp chuỗi trong Directory.GetFiles(thư mục, "MyApp.appref-ms"))
{
tập tin trả về năng suất;
}
foreach (tệp chuỗi trong LocateAppShortcut(thư mục))
{
tập tin trả về năng suất;
}
}
}
Tôi đang tìm cách cho phép tôi lặp lại một cách đáng tin cậy thông qua các đường dẫn thư mục được trả về bởi Environment.GetFolderPath khi một thư mục bắt đầu nhất định có thể chứa điểm bắt đầu để phân tích lại và/hoặc các điểm nối.
Theo như tôi biết thì các thư mục hệ thống được bản địa hóa chỉ là bí danh, nếu bạn chạy cmd và dir ổ đĩa nhà, bạn sẽ thấy thư mục "Người dùng" được gọi là "Người dùng" bất kể ngôn ngữ hệ thống của bạn là gì, vì vậy hãy kiểm tra đường dẫn của bạn. Tôi đã xác nhận điều này vì hệ thống của tôi được định cấu hình bằng tiếng Tây Ban Nha:
C:\>thư mục
Khối lượng của đơn vị C es ----------
Số sê-ri ổ đĩa: ---------
Thư mục C:\
12/10/2013 12:26 inetpub
10/06/2013 17:51 Intel
18/02/2014 14:34 Mis lugares Web
12/03/2013 17:52 NVIDIA
08/22/2013 17:22 Nhật ký hoàn hảo
24/02/2014 14:35 Tệp chương trình
06/12/2014 09:18 Tệp chương trình (x86)
18/09/2013 20:41 Toshiba
12/10/2013 12:42 Người dùng
04/11/2014 15:08 Windows
0 lưu trữ 0 byte
11 thư mục 664.620.318.720 byte miễn phí
C:\>
Tôi không có đủ dữ liệu để chẩn đoán sự cố của bạn, nhưng bạn có thể kiểm tra chức năng của mình bằng cách lấy các đường dẫn ngẫu nhiên từ FolderBrowserDialog và chuyển chúng để gỡ lỗi chức năng của bạn để xem cái nào trong số chúng hoạt động và cái nào không, để xem liệu nó có hoạt động không. cuộc gọi chính không thành công hoặc cuộc gọi đệ quy...
Tôi là một lập trình viên xuất sắc, rất giỏi!