Windows case ทุกรุ่นไม่สำคัญหรือไม่


18

ฉันรู้ว่าระบบปฏิบัติการ Windows เป็นแบบตัวพิมพ์เล็กหรือใหญ่ สิ่งนี้เป็นจริงสำหรับระบบปฏิบัติการ Windows ทั้งหมด (ตั้งแต่ Windows 95 ถึง Windows 7) หรือไม่? มีการตั้งค่ารีจิสทรีเพื่อให้ตัวพิมพ์เล็กและตัวพิมพ์เล็กหรือไม่


2
ใช่เช่นเดียวกับ MS-DOS ทุกรุ่นจากที่ซึ่งแอตทริบิวต์นี้ได้รับการสืบทอด (แน่นอนว่า MS-DOS ไม่ได้รักษาเคสไว้ดังนั้นสิ่งต่าง ๆ ได้ก้าวไปข้างหน้า :-).)
Richard

กรณีตายไม่เกี่ยวกับอะไร? ชื่อไฟล์? รหัสผ่าน?
ปีเตอร์มอร์เทนเซ่น

คำตอบ:


15

ใช่นี่เป็นจริงสำหรับ Windows ทุกรุ่น ไม่มีวิธีทำให้ Windows เล็กและใหญ่ โปรดทราบว่าแอพบางตัวที่พัฒนามาสำหรับ Unix / Linux และพอร์ตนั้นอาจคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ยกตัวอย่างเช่น Cygwin เป็นกรณี ๆ ไป พฤติกรรมนี้หายากมากแม้ว่า


7
"ไม่มีวิธีทำให้ Windows เล็กและเล็ก" ไม่ได้ค่อนข้างถูกต้อง มีหลายวิธีที่จะทำให้ส่วนต่าง ๆ ของ Windows เป็นตัวพิมพ์เล็ก - ใหญ่ดังที่อธิบายไว้ในคำตอบอื่น ๆ
sleske

มันเป็นความจริงแม้ว่าจากมุมมองของผู้ใช้ชื่อไฟล์ของ Windows จะไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กและไม่มีวิธีที่ง่ายในการเปลี่ยน
sleske

บางแง่มุมของ Windows สามารถคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่ขึ้นอยู่กับความสามารถของพีซีอื่น ๆ การบันทึกไปยังไดเรกทอรีที่ใช้ร่วมกันซึ่งอยู่บน Linux PC จะช่วยให้สามารถใช้ชื่อไฟล์ได้ นี่เป็นเพราะระบบ FILESYSTEM เช่น @sleske กล่าวว่าไม่ใช่เพราะ "เป็น Windows"
UtahJarhead

1
สิ่งนี้ไม่เป็นความจริงทั้งหมด คุณสามารถทำให้ Windows เป็นรุ่น severs และรุ่นเดสก์ท็อปบางรุ่นคำนึงถึงความสำคัญกับ Windows Services สำหรับ UNIX
Keltari

1
@Matt คำตอบนี้ไม่ถูกต้อง (แม้ว่าจะเป็นคำตอบที่เหมาะสมแล้วก็ตาม) คุณไม่ได้เปิดใช้งานการพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ superuser.com/questions/266110/ …ฉันต้องไฟล์หนึ่งชื่อ testfile และ Testfile /bIn/BaShไม่ทำงานในระบบของฉัน
วิลเลียม

8

ที่จริงแล้วขึ้นอยู่กับระบบย่อย API / Windows ที่คุณใช้ (โปรแกรมของคุณ)

หากคุณใช้ " Windows API " (มาตรฐานสำหรับแอพ Windows) ชื่อไฟล์จะไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก อย่างไรก็ตามหากคุณใช้ระบบย่อย POSIX (aka Windows Services สำหรับ Unix) คุณสามารถเปิดใช้งานตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

ดูเช่นบทความสนับสนุน MS นี้: เปิดใช้งานลักษณะการทำงานตัวพิมพ์เล็กและตัวพิมพ์ใหญ่กับระบบย่อย Windows XP และ Interix หรือ SFU


5

Cygwin พยายามเลียนแบบ Unix ดังนั้นจึงต้องรับความไวตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เพื่อไม่ให้แอปพลิเคชั่นหยุดทำงาน Windows ในตัวเองไม่ได้เป็นกรณี ๆ มันเกี่ยวกับระบบไฟล์ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ในระบบไฟล์, ระบบไฟล์ภายใต้ Microsoft Windows (Wikipedia)


แก้ไข. NTFS เป็นกรณี ๆ ไปก็ปิดการใช้งานเฉพาะใน Windows หนึ่งสามารถเปิดใช้งานได้ แต่มันเป็นอย่างมาก .. unsupportedเพื่อที่จะพูด
Apache

นี่นำไปที่ OP ไม่ใช่ MijndertStuij แต่ฉันไม่ต้องการเหยียบนิ้วเท้าของเขา เขาสมควรได้รับตัวแทนในเรื่องนี้ ไม่ว่าจะเป็น FAT (เหมือนรุ่น MS-DOS และ Windows ดั้งเดิม) หรือ NTFS (Windows NT และใหม่กว่า) พวกเขาจะไม่คำนึงถึงขนาดตัวพิมพ์ คุณจะสังเกตเห็นความแตกต่างเหล่านี้เล็กน้อยถ้าคุณบันทึกไฟล์ไปยังระบบไฟล์ Linux บน Samba (ลูกพี่ลูกน้องของการแชร์ไฟล์และการพิมพ์)
UtahJarhead

จากหน้า Wikipedia NTFS: ตัวละครที่ได้รับอนุญาตในชื่อไฟล์ - ในเนมสเปซ Posix หน่วยรหัส UTF-16 ใด ๆ (ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) ยกเว้น U + 0000 (NUL) และ / (สแลช) ใน Win32 namespace หน่วยรหัส UTF-16 ใด ๆ (ตัวพิมพ์เล็กและตัวพิมพ์เล็ก) ยกเว้น U + 0000 (NUL) / (สแลช) \ (แบ็กสแลช): (โคลอน) * (เครื่องหมายดอกจัน)? (เครื่องหมายคำถาม) "(อ้าง) <(น้อยกว่า)> (มากกว่า) และ | (ไปป์) [5]
UtahJarhead

ลองใช้/bIn/BaShใน Cygwin และบอกฉันอีกครั้งว่ามันเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
แมตต์

5

Microsoft ได้เพิ่มการกำหนดค่าตัวพิมพ์เล็กและตัวพิมพ์เล็กที่สามารถใช้กับไดเรกทอรี NTFS (โฟลเดอร์) สำหรับไดเรกทอรีที่มีการตั้งค่าสถานะนี้ (เปิดใช้งาน) การดำเนินการทั้งหมดในไฟล์ในไดเรกทอรีนั้นจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โดยไม่คำนึงว่าระบุ FILE_FLAG_POSIX_SEMANTICS หรือไม่ ซึ่งหมายความว่าหากคุณมีสองไฟล์ที่แตกต่างกันไปตามตัวพิมพ์เล็กและใหญ่ในไดเรกทอรีที่มีการทำเครื่องหมายด้วยตัวพิมพ์เล็กและตัวพิมพ์ใหญ่โปรแกรมทั้งหมดจะสามารถเข้าถึงได้

เริ่มต้นด้วยWindows 10 build 17107 Microsoft ได้เพิ่มความสามารถในการดูและแก้ไขการตั้งค่าสถานะนี้ในคำสั่ง fsutil.exe

ในการตรวจสอบว่าไดเร็กทอรีเป็นตัวพิมพ์เล็กหรือใหญ่ให้รันคำสั่งต่อไปนี้:

fsutil.exe file queryCaseSensitiveInfo <path>

หากต้องการทำเครื่องหมายไดเรกทอรีเป็นแบบตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็กหรือใหญ่ตามลำดับ:

fsutil.exe file setCaseSensitiveInfo <path> enable
fsutil.exe file setCaseSensitiveInfo <path> disable

4

นี้เป็นจากที่นี่ คุณสามารถกำหนดค่าHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitiveรีจิสตรีให้0เป็นอย่างที่ผู้เขียนคนอื่นแนะนำ สร้างไฟล์ที่ชื่อadd.regด้วยเนื้อหาต่อไปนี้และเรียกใช้

Windows Registry Editor Version 5.00

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

จากนั้นใช้Cygwinเพื่อทำงานกับชื่อไฟล์ที่คำนึงถึงขนาดตัวพิมพ์

ในการทำเช่นนั้นคุณจะต้องติดตั้งระบบไฟล์ NTFS พร้อมposix=1ตัวเลือกในของคุณ/etc/fstabตามที่บทความนี้แนะนำ นี่เป็นตัวอย่างจากฉัน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

เมื่อทำเสร็จแล้วคุณจะสามารถจัดการกับชื่อไฟล์ที่ใช้ตัวอักษรพิมพ์bashเล็กmcและตัวพิมพ์เล็กgitฯลฯ

ตรวจสอบให้แน่ใจว่าจะรีบูตหลังจากแก้ไขทั้งสองอย่าง


3

Barfieldmv ถูกต้อง ระบบไฟล์จะคำนึงถึงขนาดตัวพิมพ์และไฟล์จะถูกเก็บไว้ในเคสที่เหมาะสม เลเยอร์การเข้าถึงไฟล์มีหน้าที่ลบกรณีและปัญหาเมื่อจับคู่ไฟล์กับตัวให้คำอธิบายไฟล์ใหม่


1
คุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการที่เป็นนามธรรมนี้ระหว่างระบบไฟล์และผู้ใช้งานได้หรือไม่ (เช่นให้ตัวอย่างทีละขั้นตอน) คุณควรตอบคำถามที่แท้จริงของ op ในระบบปฏิบัติการก่อนหน้านี้และระบุว่าสามารถบังคับให้ต้องคำนึงถึงตัวพิมพ์เล็กหรือตัวพิมพ์เล็กหรือไม่
MaQleod

ฉันจะไม่สามารถให้คำตอบอย่างเต็มรูปแบบในปัจจุบันเนื่องจากฉันเป็นคนโง่มากในขณะนี้ .. อย่างไรก็ตามฉันสามารถเสนอต่อไปนี้ Windows Services สำหรับ Unix ใช้ระบบไฟล์แบบเดียวกับที่ระบบปฏิบัติการทำโดยเฉพาะโดยไม่ใช้ API ที่เปิดใช้งานตัวพิมพ์เล็กและใหญ่ โปรดดู: support.microsoft.com/kb/817921สำหรับข้อมูลว่า Case 'Preserving' นั้นเหมือนกับ Case 'Sensitive' อย่างไร แต่เลเยอร์การเข้าถึงทั่วไปอนุญาตให้ใช้กับ Case 'Ignorance' :)
whardier

คุณสามารถพูดได้ว่า windows ไม่คำนึงถึงขนาดตัวพิมพ์ นั่นหมายความว่ามัน (windows) รู้ว่าตัวอักษรเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กและยอมรับทั้งสองตัว ไม่ได้อ่านอย่างใดอย่างหนึ่งว่าเป็นข้อผิดพลาด
IGRACH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.