2011-08-26 24 views
19

Có an toàn để giả định rằng các đường dẫn tệp cục bộ và mạng của Windows KHÔNG phân biệt chữ hoa chữ thường hay không?Đường dẫn tệp trong môi trường Windows không phân biệt chữ hoa chữ thường?

+2

Xác định "an toàn". NTFS _can_ được cấu hình với tên tập tin có phân biệt chữ hoa chữ thường, nhưng hầu như không ai làm điều đó (và những người thường được chuẩn bị để chịu trách nhiệm về việc phá vỡ các chương trình). Nhưng tại sao bạn cần phải biết điều này? –

+1

@Ken, không có gì đáng kinh ngạc về 51%. Nhiều câu hỏi - thường thú vị nhất - chỉ không có câu trả lời hợp lý. 51% cho thấy rằng đây không phải là người dùng không biết dấu kiểm được vạch ra là gì; bất kể những lỗi lầm nào khác của anh, anh rõ ràng đưa ra một số quyết định lý luận về những gì để chấp nhận. –

+1

@Henning, tôi không đồng ý. Nếu bạn hỏi 100 câu hỏi và 50 người trong số họ không thể được trả lời bởi bất kỳ ai, hoặc bạn đang hỏi rất nhiều câu hỏi xấu, bạn đang đặt câu hỏi ngoài chủ đề hoặc bạn không theo dõi sau khi bạn tự giải quyết và trả lời câu hỏi của riêng bạn để có lợi cho người khác. Nhưng tất nhiên, bạn được hưởng ý kiến ​​của riêng bạn. :) –

Trả lời

16

Có. Hệ thống tệp Windows (cục bộ), bao gồm NTFS, cũng như FAT và các biến thể, không phân biệt chữ hoa chữ thường (thường). Việc triển khai thực hiện hệ thống tệp mạng có thể phân biệt chữ hoa chữ thường, tuy nhiên, phần lớn phần mềm cho phép Windows truy cập vào nó (chẳng hạn như SMB) sẽ tự động làm cho hệ thống tệp nhạy cảm có vẻ như không phân biệt chữ hoa chữ thường với Windows.

Để biết chi tiết, tôi đã đọc phần trong số Wikipedia article on filenames.

20

Độ nhạy trường hợp trên Windows thực sự được triển khai trong cách ứng dụng mở tệp. NTFS có thể là một hệ thống tệp phân biệt chữ hoa chữ thường và có thể lưu trữ tệp một cách vui vẻ, với các tên giống nhau chỉ khác nhau theo từng trường hợp trong cùng một thư mục.

Trên Windows tất cả các tệp cuối cùng được mở qua API CreateFile - Nếu cờ FILE_FLAG_POSIX_SEMANTICS được chuyển đến cuộc gọi (và hệ thống tệp được truy cập tự nhiên phân biệt chữ hoa chữ thường) thì tệp sẽ được mở dựa trên tên trùng khớp chính xác . Nếu FILE_FLAG_POSIX_SEMANTICS không được chuyển thì hệ thống tệp sẽ mở một tệp không phân biệt chữ hoa chữ thường và sẽ mở một trong các tệp có tên trùng khớp. Nếu có nhiều hơn nó không được xác định là một trong những thực sự được mở ra.

Hầu hết các triển khai thời gian chạy C và C++ trên Windows không cung cấp quyền truy cập vào cơ chế này và không bao giờ sử dụng cờ này để cách duy nhất để truy cập vào các hành vi phân biệt chữ hoa thường là sử dụng API Windows trực tiếp.

tl; dr - Thời gian chạy ngôn ngữ của bạn có thể làm lộ hệ thống tệp của bạn dưới dạng phân biệt chữ hoa chữ thường hoặc phân biệt chữ hoa chữ thường. Bạn có thể, nếu bạn sử dụng API cửa sổ trực tiếp, hãy truy cập hệ thống tập tin được hỗ trợ đầy đủ trong trường hợp senstive.

Các vấn đề liên quan