Làm thế nào để bạn làm cho Windows 7 hoàn toàn phân biệt chữ hoa chữ thường đối với hệ thống tệp?


37

Tôi muốn làm cho Windows 7 phân biệt chữ hoa chữ thường khi nó đọc / ghi bất cứ thứ gì trên ổ cứng (ổ C hoặc bất kỳ ổ NTFS nào khác).

Tôi tìm thấy một video thông qua google nói rằng để thay đổi khoá đăng ký

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath

đến giá trị 1 ( nguồn ).

Tôi cũng tìm thấy một mục hỗ trợ Windows có nội dung nói về việc sửa đổi khoá đăng ký

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive

điều đó dẫn đến việc tôi cho rằng việc đặt giá trị 0 sẽ làm cho Windows phân biệt chữ hoa chữ thường với hệ thống tệp NTFS ( nguồn ).

Tôi có cảm giác giải pháp thứ hai là câu trả lời, nhưng tôi không chắc và tôi không muốn thử mà không chắc chắn.

Có ai biết chắc chắn đâu là cách chính xác để làm cho Windows 7 phân biệt chữ hoa chữ thường khi nó đọc / ghi vào ổ C (và bất kỳ ổ NTFS nào khác) không?

Câu trả lời:


25

Bạn có thể đặt HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivegiá trị đăng ký thành 0như các tác giả khác đề xuất. Tạo một tệp có tên add.regvới nội dung sau đây và chạy nó.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000

Sau đó sử dụng Cygwin để làm việc với tên tệp phân biệt chữ hoa chữ thường.

Để làm như vậy, bạn cần gắn hệ thống tệp NTFS với posix=1tùy chọn trong /etc/fstab, như bài viết này đề xuất. Đây là một đoạn từ tôi fstab:

none                    /cygdrive       cygdrive        binary,posix=1,user             0 0
C:                      /cygdrive/c     ntfs            binary,posix=1,user,auto        0 0
C:/Users                /home           ntfs            binary,posix=1,user,auto        0 0

Khi ở trên được thực hiện, bạn sẽ có thể để đối phó với trường hợp nhạy cảm tên tập tin sử dụng bash, mc, git, vv


6
Bạn phải khởi động lại để điều này có hiệu lực.
William

2
@William: Tôi tin rằng bạn chỉ cần chấm dứt tất cả các quy trình và dịch vụ của Cygwin (như Apache , sshd , v.v.). Điều đó là đủ, vì cygwin1.dllsẽ được dỡ khỏi RAM.
Bass

3
Tôi đang nói về HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
William

16

Để thực sự tạo 2 tệp có cùng tên nhưng trường hợp khác nhau trong cùng một thư mục, bạn cần cài đặt Unix Services 3.5 nhưng điều này chỉ hoạt động trên Windows 32 bit. Sau đó, bạn cần chạy "C Shell" để tạo các tệp. Bạn không thể tạo các tập tin thông qua explorer. Sau khi tạo, explorer không chơi tốt với các tệp. Nếu bạn đổi tên cái thứ hai, con trỏ sẽ nhảy sang cái thứ nhất. Ngoài ra, hầu hết các ứng dụng chỉ có thể mở một trong các tệp, vì chúng mong đợi một hệ thống tệp không phân biệt chữ hoa chữ thường. Nếu bạn đang cài đặt Cygwin 64 bit và thay đổi nó thành phân biệt chữ hoa chữ thường.

Tôi đã cố gắng mô phỏng một hệ thống tệp phân biệt chữ hoa chữ thường cho các mục đích gỡ lỗi trong quá trình phát triển. Có vẻ như cách tiếp cận tốt hơn là sử dụng VMWare với một phiên bản Ubuntu để phát triển.


"sử dụng VMWare với một thể hiện của Ubuntu để phát triển" => Không phải là trường hợp với các trò chơi
Петър Петров

16

Tất cả các cài đặt mà bạn có thể tìm thấy trên web là dành cho NFS không dành cho NTFS (lưu ý sự khác biệt)!

NFS (Network File System) là một giao thức mạng.

Do đó, thay đổi khoá đăng ký HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive S NOT KHÔNG thay đổi bất cứ điều gì bạn muốn.

NTFS phân biệt chữ hoa chữ thường nhưng Windows API thì KHÔNG , nó chỉ nhớ trường hợp tên tệp. Điều này có nghĩa là mặc dù tệp của bạn được hiển thị vì AbC.TXTnó vẫn có thể truy cập được bởi abc.txtaBc.TxT. Đây là một hạn chế của Windows, không phải NTFS.

Một cái khác HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPathvề cơ bản tắt việc chuẩn hóa các tên tệp kế thừa 8.3 được sử dụng bởi DOS (tất cả đều là mũ). Khi được bật (mặc định) ABC.TXTsẽ được hiển thị dưới dạng Abc.txt, nhưng vẫn có thể truy cập được bằng tất cả các biến thể khác.

Để chính xác hơn:

Trên thực tế, nó phụ thuộc vào phần mềm truy cập vào FS.

Nếu nó sử dụng API WIN32 (mà 99,9% phần mềm làm) thì nó sẽ không phân biệt chữ hoa chữ thường cho dù bạn làm gì. Tất cả các phần mềm tích hợp trong Windows (như Explorer, dấu nhắc lệnh, Internet Explorer, v.v.) và tất cả các phần mềm tiêu dùng ngoài đó đều sử dụng WIN32 và luôn không phân biệt chữ hoa chữ thường.

Dịch vụ NFS, Java và một số dịch vụ khác là POSIX và họ sẽ tuân theo cài đặt đăng ký 'phản cảm'. Tuy nhiên, tắt tùy chọn thực sự có thể khiến bạn gặp vấn đề lớn hơn, bởi vì phần mềm này có thể tạo các tệp không thể truy cập được từ chính Windows và phần mềm Win32 khác.


3
Trên thực tế, ở cấp độ FS trước khi xử lý bổ sung, trường hợp IS nhạy cảm, tuy nhiên, NTFS dịch tất cả các tên tệp thành tất cả chữ hoa và khi nhập một ký tự chữ thường, dịch nó thành chữ hoa rồi tìm tệp đã nói. (Xem support.microsoft.com/ kb / 103657 )
Jeff F.

Bạn đúng rồi. Tôi chỉ cố gắng để giải thích nó đơn giản hơn.
venimus

Vậy làm thế nào để một phiên bản java dựa trên Win32 thành công trong việc tìm kiếm "SHORT. Class" so với "Short. Class" nếu chúng nằm trong cùng một thư mục? Tôi không thể tin rằng KHÔNG có cuộc gọi để làm điều này.
Ira Baxter

Tôi nghĩ bởi vì Java là POSIX
venimus

2
Tôi khá chắc chắn rằng thời gian chạy Java tiêu chuẩn (nghĩa là từ Oracle) không phân biệt chữ hoa chữ thường trên Windows. Nếu bạn đã cố gắng đặt SHORT.classShort.classtrong cùng một thư mục, nó sẽ không hoạt động. (Tất nhiên nếu chúng ở trong tệp .jar thì không có vấn đề gì.)
Harry Johnston

4

Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm:

http://www.chilkatsoft.com/p/p_454.asp

Trang này khuyên bạn nên đặt HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivethành 0 để phân biệt chữ hoa chữ thường. Tôi nghĩ rằng bạn đã tìm thấy điều này rồi, và điều này có vẻ như là cách tiêu chuẩn để làm điều đó (ngay cả Microsoft KB mà bạn tìm thấy cũng gợi ý nó).

Có vẻ như bạn phải thay đổi cài đặt kernel. Cẩn thận với các cập nhật mặc dù.

EDIT: Xem ra mặc dù, một số chương trình có thể phụ thuộc vào trường hợp không nhạy cảm.

EDIT: Bạn có thể có thể sử dụng phân vùng UDF. Hệ thống tập tin này phân biệt chữ hoa chữ thường và tôi nghĩ nó hoạt động trên cả Windows và Linux.

Xem nàynày .


Bạn có thể đăng thêm thông tin từ trang bạn liên kết để vui lòng. Đừng sao chép toàn bộ nhưng bạn có thể sao chép đoạn có liên quan và tóm tắt phần còn lại.
ChrisF

Vâng, toàn bộ trang chỉ là một đoạn văn. Tôi sẽ thực hiện một chỉnh sửa nhanh chóng mặc dù.
beatgammit

Cảm ơn tjameson. Về các chương trình có thể phụ thuộc vào trường hợp không nhạy cảm, đây thực sự là một vấn đề lớn. Một chương trình có thể tìm kiếm "WINDOWS" và không tìm thấy vì bây giờ nó thực sự là "Windows", phải không? Bắn, tôi đang cố gắng tìm cách sao chép mọi thứ từ Linux sang Windows và tôi đã thấy mình trong tình huống các thư mục có cùng một cách viết với các chữ hoa khác nhau tồn tại ở một vị trí.
trusktr

Chà, điều duy nhất tôi có thể nghĩ đến là xung đột bằng tay. Nếu bạn sao chép các tập tin qua, Windows sẽ hỏi bạn nếu bạn muốn hợp nhất hoặc tạo một bản sao hoặc một cái gì đó. Tôi không thể nhớ (bản thân tôi là một người đàn ông linux).
beatgammit

Theo bài viết này, điều này chỉ hoạt động cho các hệ thống con không phải Win32, vì vậy không áp dụng cho NTFS.
harrymc

4

Microsoft đã nói gì về NTFS và thay đổi độ nhạy trường hợp.

Có vẻ như bạn không phải thay đổi kernel để cho phép tra cứu trường hợp nhạy cảm trên mạng.

http://technet.microsoft.com/en-us/l Library / cc783185 (WS.10) .aspx

.

Cấu hình độ nhạy trường hợp cho tên tệp và thư mục

Áp dụng cho: Windows Server 2003 R2

Để định cấu hình độ nhạy trường hợp cho tên tệp và thư mục bằng giao diện Windows Mở Microsoft Services cho Hệ thống tệp mạng: bấm Bắt đầu, trỏ đến Chương trình, trỏ đến Công cụ quản trị, sau đó bấm Dịch vụ Microsoft cho Hệ thống tệp mạng.

Nếu cần, hãy kết nối với máy tính bạn muốn quản lý.

Bấm chuột phải vào Máy chủ cho NFS, rồi bấm Thuộc tính.

Nhấp vào tab Xử lý tên tệp.

Làm một điều trong số sau đây:

Để bật tra cứu tên tệp và thư mục phân biệt chữ hoa chữ thường, hãy chọn hộp kiểm Bật tra cứu phân biệt chữ hoa chữ thường.

Để tắt tra cứu tên tệp và thư mục phân biệt chữ hoa chữ thường, hãy bỏ chọn hộp kiểm Bật tra cứu phân biệt chữ hoa chữ thường.

Nhấp vào Áp dụng.

Quan trọng Những thay đổi này sẽ không có hiệu lực cho đến khi Máy chủ cho NFS được khởi động lại. Để biết thông tin về cách dừng và khởi động Máy chủ cho NFS, hãy xem Bắt đầu và dừng Máy chủ cho NFS. Bạn cũng cần phải vô hiệu hóa phân biệt chữ hoa chữ thường của Windows để Server cho NFS hỗ trợ tên tệp phân biệt chữ hoa chữ thường. Bạn có thể vô hiệu hóa phân biệt chữ hoa chữ thường của Windows bằng cách xóa khóa đăng ký sau thành 0: HKLM \ HỆ THỐNG \ CurrentControlSet \ Control \ Trình quản lý phiên \ kernel DWORD

Để cấu hình độ nhạy trường hợp cho tên tệp và thư mục bằng dòng lệnh Mở dấu nhắc lệnh.

Để kích hoạt độ nhạy trường hợp, gõ như sau:

máy chủ nfsadmin [ComputerName] config caseensiteelsookups = yes

Để vô hiệu hóa độ nhạy trường hợp và tùy chọn chỉ định trường hợp tên tệp được Máy chủ trả về cho NFS, tại dấu nhắc lệnh, hãy nhập như sau:

máy chủ nfsadmin [ComputerName] config caseensiteelsookups = no [ntfscase = {Upper | thấp hơn | bảo tồn}]

Đối số> Tên máy tính = Tên của máy tính bạn muốn định cấu hình.

Quan trọng Những thay đổi này sẽ không có hiệu lực cho đến khi Máy chủ cho NFS được khởi động lại. Để biết thông tin về cách dừng và khởi động Máy chủ cho NFS, hãy xem Bắt đầu và dừng Máy chủ cho NFS.

Lưu ý Tùy chọn ntfscase đặt độ nhạy trường hợp cho hệ thống tệp NTFS. Độ nhạy trường hợp mặc định là bảo toàn (trường hợp bảo quản). Để xem cú pháp đầy đủ cho lệnh này, tại dấu nhắc lệnh, gõ: nfsadmin server /?

.


1
Tôi không nghĩ rằng điều này cho phép có nhiều tệp có cùng tên, đó là những gì anh ấy muốn làm.
beatgammit

1
Sau đó, anh ta sẽ phải thực hiện hack registry.
Moab

Áp dụng cho: Windows Server 2008 R2
Behrouz.M

3

Microsoft tuyên bố ;

Trong NTFS, tên bảo tồn trường hợp, nhưng không phân biệt chữ hoa chữ thường.
NTFS không phân biệt tên tệp dựa trên trường hợp.

Cho phép phân biệt chữ hoa chữ thường trong Windows sẽ cho phép phần mềm độc hại tạo các tệp mà người dùng không thể truy cập hoặc xóa, vì vậy nó không được phép vì một lý do chính đáng.

Trong mọi trường hợp, tôi khá chắc chắn rằng nếu bạn quản lý để làm cho trường hợp phân biệt NTFS, Windows sẽ gặp sự cố và cài đặt lại sẽ là giải pháp duy nhất.


Bạn cũng đúng rằng nó trình bày một vấn đề bảo mật nếu bạn làm. "Ví dụ: phiên bản edit.exe bị nhiễm chương trình độc hại loại ngựa Trojan và có tên EDIT.EXE, có thể được lưu trữ trong cùng thư mục với edit.exe. Nếu người dùng phải nhập chỉnh sửa tại dấu nhắc lệnh của Windows , phiên bản ngựa thành Troia (EDIT.EXE) có thể được thực thi thay vì phiên bản tiêu chuẩn ".. technet.microsoft.com/en-us/l
Moab

Nó có thể sẽ không sập Windows trừ khi bạn đổi tên các tệp / thư mục chính. Tôi khá chắc chắn rằng Windows đảm bảo sử dụng đúng trường hợp, trên thực tế, họ thậm chí còn khuyên dùng nó.
beatgammit

Hmm, đó là tjameson thú vị. Bạn có thể cung cấp một liên kết đến khuyến nghị đó?
trusktr

11
Nếu phần mềm độc hại có quyền truy cập ghi vào đĩa của bạn, bạn có vấn đề lớn cho dù hệ thống tệp của bạn có phân biệt chữ hoa chữ thường hay không. #redherring
Leopd

3
Sổ đăng ký chứa đầy các tham chiếu đến các tệp hệ thống với cách sử dụng trường hợp không nhất quán. Trường hợp nhạy cảm sẽ gây ra vỡ lớn.
kreemoweet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.