Windows bir NTFS bölümünde aynı ada ancak farklı büyük harf kullanımına sahip iki dosyayla karşılaştığında varsayılan beklenen davranış nedir?


16

Linux'tan bir NTFS bölümüne iki dosya yazmak kolaydır ve bu dosyaların her ikisinin de aynı harfleri içerdiği ancak farklı bir durumla (örn. Some_file.txt ve Some_File.txt) sahip olması gerekir. Linux onları ayırt eder.

Windows bunları nasıl ele alıyor?


1
Şahsen, ilgili tüm faktörler nedeniyle, sadece tanımlanmamış davranışa neden olduğunu söyleyebilirim. Windows bu durumda davranışı tanımlamazsa, tanım gereği tanımsızdır. , Windows Eğer yaptığı davranışı tanımlamak Ciddi tüm programlar tutarlı bu idare şüphe çünkü, hala, tanımsız davranış olarak görmemizi sağlar.
jpfx1342

Yanıtlar:


20

MS-DOS, WOW ve Win32 kişilikleri eşleşen ilk dosyayı döndürür. Bazı uygulamalar ve ilaç aktif maddeleri için vaka duyarsızlık olduğunu zorlanan (örneğin MS-DOS sadece onunla başa olamaz). POSIX kişilik olacak (örneğin, yüklenmiş UNIX araçları varsa) farklılaştırmak ve harf varsayılan olarak duyarlıdır. Yerel Windows NT komut istemi her ikisini de görüntüler, ancak ayarlara (ObCaseInsensitive) ve araçların hangi API'leri kullandığına bağlı olarak, yalnızca ilk bulur.

Bkz. Microsoft Technet makalesi Dosya adları NTFS Birimlerinde Büyük / Küçük Harfe Duyarlı (KB100625) ve ayrıca çeşitli NT alt sistemlerindeki büyük / küçük harf duyarlılığının incelikleri hakkında ayrıntılı bir tartışma: Windows'ta büyük / küçük harfe duyarlılığı anlama: obcaseinsensitive, FILE_CASE_SENSITIVE_SEARCH

Özellikle, ObCaseInsensitive değeri tüm NT Object Manager'ın büyük / küçük harf duyarlılığını kontrol eder:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive
  • 0 olarak ayarlandığında, nesne yöneticisi büyük / küçük harfe duyarlı modda çalışır.
  • 1 olarak ayarlandığında, nesne yöneticisi büyük / küçük harfe duyarlı olmayan modda çalışır.
  • Belirtilmediğinde, NT 5.1 (Windows XP) ve sonraki sürümleri duyarsız modda varsayılan olarak çalışır.
  • obcaseinsensitive, NT 5.0 (Windows 2000) ve NT'nin önceki sürümlerinde, her zaman büyük / küçük harfe duyarlı modda çalışan bir anlamı yoktur.

Cygwin bu noktada temel / etkili büyük / küçük harf duyarlılığı ayarlarını almalıdır .

İlgili SuperUser sorusu Windows 7'de klasör adı büyük / küçük harf duyarlılığı nasıl yapılandırılır? ve TechNet makalesinde Dosya ve Klasör Adları için Büyük / Küçük Harfe Duyarlılığı Yapılandırma Bu durumu düzenli olarak ele almanız gerekirse, NT'deki dosya ve klasörler için büyük / küçük harfe duyarlılığı etkinleştirme hakkında daha fazla bilgi vardır.

Büyük / küçük harfe duyarlı takım / NTFS / NFS birimlerine erişim ile ilgili ek kaynaklar:


İki dosya varsa, One.txt ve ONE.txt, one.txt sağlarsam hangi dosya "önce eşleşir"? "İlk eşleşen dosya" olacak kurallar var mı?
trusktr

1
Muhtemelen bir dizindeki dahili dosya sırasına bağlıdır. Tam olarak bilmek istiyorsan yarın deneyeceğim.
Daniel B

2
Hangisinin ilk olduğuna tamamen dizinde göründükleri sıra ile karar verilir. Bu mutlaka yaratıldıkları sıra değildir. Ve herhangi bir dosya değiştirilirse veya dizin güncellenirse değişebilir. (Chkdsk, Defrag, silme, bu klasördeki diğer dosyaları taşıma sırası değişebilir.)
Tonny

1
@trusktr Görünüşe göre görünüşe göre bir çeşit düzen var. Her biri farklı büyük harf ve farklı siparişlerde birden çok dosya kümesi (NTFS-3G kullanarak) oluşturdum. Windows (veya daha doğrusu Not Defteri) , oluşturma sırasına bakılmaksızın dosyayı her zaman büyük harfle başlatır. moreyine de bir soru işareti döndürür.
Daniel B

1
@trusktr Yönetmenin B + Ağacı'nın INDX girişlerinin sırasını izleyecek. Bu ağaç tasarıma göre sıralanmış olarak tutulur, ancak NTFS sürücüsüne bağlı olarak biraz değişebilir. (OnCaseInsensitive = 0, Win32 / DOS / WOW API) , belirtilen adın ve INDX giriş adının (sıralanmış) ağacında yürürken ilk eşleme olacaktır . NTFS sıralı karşılaştırmalar kullanır, bu nedenle büyük harf her zaman küçük harften önce bulunmalıdır . (AZ = 0041-005A, az = 0061-007A)
Maxx Daymon

2

Öyle değil. Büyük / küçük harf farklarını dikkate alır, ancak tam olarak aynı adları aynı dosya olarak görür.

Bunu tüm küçük harflerle bir dosya oluşturarak ve ardından yalnızca bir harf üstte başka bir dosya oluşturarak test edebilirsiniz ve şikayet edersiniz.


Bunu şu anda test edecek ortamım yok. Şu anda sadece OS X var. Ne olduğunu tarif eder misiniz? İlk tahminim, Windows'un bazı kriterler tarafından okunması / yazılması gereken dosyayı (belki de yanlışlıkla) seçmesidir (örneğin, küçük harf öncelikli sözcük sırası veya tam tersi). Yoksa herhangi bir dosyanın değiştirilmesine izin vermiyor mu?
trusktr

1
@trusktr Sistem, uygulamaya veya koda bağlı olarak dosyanın zaten var olduğundan şikayet eder, bu sessizce yok sayılır ve önceden var olan dosyanın üzerine yazılır. Gibi jpfx1342 yorumladı , bu konunun tanımsız davranış olarak ele alınmalıdır.
Casey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.