Bagaimana Anda membuat Windows 7 sepenuhnya case-sensitive sehubungan dengan filesystem?

37

Saya ingin membuat Windows 7 case-sensitive ketika membaca / menulis apa pun pada hard drive (drive C, atau drive NTFS lainnya).

Saya menemukan video melalui google yang mengatakan untuk mengubah kunci registri

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

ke nilai 1 ( sumber ).

Saya juga menemukan item dukungan Windows yang mengatakan sesuatu tentang memodifikasi kunci registri

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

yang membuat saya berasumsi menempatkan nilai 0 akan membuat Windows case-sensitive dengan sistem file NTFS ( sumber ).

Saya merasa solusi kedua adalah jawabannya, tetapi saya tidak yakin dan saya tidak ingin mencobanya tanpa yakin.

Adakah yang tahu pasti apa cara yang benar untuk membuat Windows 7 case-sensitive ketika membaca / menulis ke drive C (dan drive NTFS lainnya)?

trusktr
sumber

Jawaban:

25

Anda dapat mengatur nilai HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitiveregistri 0seperti yang disarankan penulis lain. Buat file add.regdengan nama konten berikut dan jalankan.

Windows Registry Editor Version 5.00

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

Kemudian gunakan Cygwin untuk bekerja dengan nama file case-sensitive.

Untuk melakukannya, Anda perlu me-mount sistem file NTFS dengan posix=1opsi di Anda /etc/fstab, seperti yang disarankan artikel ini . Berikut cuplikan dari saya 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

Setelah di atas dilakukan, Anda akan dapat menangani kasus-sensitif nama file menggunakan bash, mc, gitdll

Bas
sumber
6
Anda harus memulai ulang agar ini berlaku.
William
2
@ William: Saya percaya Anda hanya perlu menghentikan semua proses dan layanan Cygwin (seperti Apache , sshd , dll.). Itu harus cukup, karena cygwin1.dllakan dibongkar dari RAM.
Bass
3
Saya berbicara tentang HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
William
16

Untuk benar-benar membuat 2 file dengan nama yang sama tetapi huruf yang berbeda di direktori yang sama, Anda perlu menginstal Unix Services 3.5 tetapi ini hanya bekerja pada Windows 32 bit. Maka Anda perlu menjalankan "C Shell" untuk membuat file. Anda tidak dapat membuat file melalui explorer. Setelah dibuat, penjelajah tidak bermain bagus dengan file. Jika Anda pergi untuk mengganti nama yang kedua, kursor akan melompat ke yang pertama. Juga, sebagian besar aplikasi hanya dapat membuka salah satu file, karena mereka mengharapkan sistem file case-insensitive. Jika Anda menggunakan 64 bit, instal Cygwin dan ubah menjadi case sensitif.

Saya mencoba untuk meniru sistem file case-sensitif Linux untuk keperluan debugging selama pengembangan. Tampaknya pendekatan yang lebih baik adalah menggunakan VMWare dengan instance Ubuntu untuk pengembangan.

pengguna1491819
sumber
"gunakan VMWare dengan instance Ubuntu untuk pengembangan" => Tidak halnya dengan game
Петър Петров
16

Semua pengaturan ini yang dapat Anda temukan di web adalah untuk NFS bukan untuk NTFS (perhatikan perbedaannya)!

NFS (Network File System) adalah protokol jaringan.

Dengan demikian mengubah kunci registri HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive TIDAK AKAN mengubah apa pun yang Anda inginkan.

NTFS peka huruf besar-kecil tetapi Windows API BUKAN , ia hanya mengingat huruf besar kecilnya. Ini berarti bahwa meskipun file Anda ditampilkan karena AbC.TXTmasih dapat diakses oleh abc.txtdan aBc.TxT. Ini adalah batasan Windows, bukan NTFS.

Yang lain HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPathpada dasarnya mematikan normalisasi legacy 8.3 nama file yang digunakan oleh DOS (yang semuanya huruf besar). Ketika dihidupkan (default) ABC.TXTakan ditampilkan sebagai Abc.txt, tetapi masih dapat diakses oleh semua variasi lainnya.

Agar lebih akurat:

Sebenarnya itu tergantung dari perangkat lunak yang mengakses FS.

Jika menggunakan WIN32 API (yang 99.9% dari perangkat lunak tidak) itu akan menjadi case-sensitive apa pun yang Anda lakukan. Semua perangkat lunak bawaan di Windows (seperti Explorer, prompt perintah, Internet Explorer, dll.) Dan semua perangkat lunak konsumen di luar sana menggunakan WIN32 dan selalu tidak peka huruf besar-kecil.

Layanan NFS, Java dan beberapa yang lain adalah POSIX dan mereka akan mematuhi pengaturan registri 'obcaseinsensitive'. Namun mematikan opsi ini sebenarnya bisa membuat Anda lebih besar masalah, karena perangkat lunak ini dapat membuat file yang tidak dapat diakses dari Windows itu sendiri dan perangkat lunak Win32 lainnya.

venimus
sumber
3
Sebenarnya, pada tingkat FS sebelum pemrosesan tambahan itu case case, bagaimanapun, NTFS menerjemahkan semua nama file ke semua huruf besar dan ketika salah satu dengan karakter huruf kecil dimasukkan menerjemahkannya ke huruf besar kemudian mencari file tersebut. (Lihat support.microsoft.com/ kb / 103657 )
Jeff F.
Kamu benar. Saya hanya mencoba menjelaskannya dengan lebih sederhana.
Venimus
Jadi bagaimana versi java berbasis Win32 berhasil menemukan "SHORT.class" vs. "Short.class" jika mereka berada di direktori yang sama? Saya tidak percaya tidak ada panggilan untuk melakukan ini.
Ira Baxter
Saya pikir karena Java adalah POSIX
venimus
2
Saya cukup yakin bahwa runtime Java standar (yaitu, dari Oracle) tidak peka huruf besar-kecil pada Windows. Jika Anda mencoba meletakkan SHORT.classdan Short.classdalam direktori yang sama, itu tidak akan berfungsi. (Tentu saja jika mereka di dalam file .jar tidak ada masalah.)
Harry Johnston
4

Saya pikir inilah yang Anda cari:

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

Halaman ini merekomendasikan pengaturan HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitiveke 0 untuk membuatnya case-sensitive. Saya pikir Anda sudah menemukan ini, dan ini terlihat seperti cara standar untuk melakukannya (bahkan Microsoft KB yang Anda temukan menyarankannya).

Sepertinya Anda harus mengubah pengaturan kernel. Waspadalah terhadap pembaruan.

EDIT: Hati-hati, beberapa program mungkin bergantung pada ketidakpekaan huruf besar-kecil.

EDIT: Anda mungkin bisa menggunakan partisi UDF. Sistem file ini peka huruf besar-kecil dan saya pikir ini bekerja pada Windows dan Linux.

Lihat ini dan ini .

hajar
sumber
Bisakah Anda memposting informasi lebih lanjut dari halaman yang Anda tautkan. Jangan menyalin semuanya tetapi Anda bisa menyalin paragraf yang relevan dan merangkum sisanya.
ChrisF
Yah, seluruh halaman hanya paragraf. Saya akan melakukan edit cepat.
beatgammit
Terima kasih tjameson. Mengenai program yang mungkin tergantung pada ketidakpekaan kasus, ini memang masalah besar. Suatu program mungkin mencari "WINDOWS" dan tidak menemukannya karena itu benar-benar "Windows" sekarang, kan? Tembak, saya bingung mencoba mencari cara menyalin hal-hal dari Linux ke Windows, dan saya telah menemukan diri saya dalam situasi di mana folder ejaan yang sama dengan topi berbeda ada di satu lokasi.
trusktr
Yah, satu-satunya hal yang dapat saya pikirkan adalah konflik secara manual. Jika Anda menyalin file, Windows harus bertanya apakah Anda ingin menggabungkan atau membuat salinan atau sesuatu. Saya tidak ingat (saya sendiri orang linux).
beatgammit
Menurut artikel ini ini hanya berfungsi untuk subsistem non-Win32, jadi tidak berlaku untuk NTFS.
harrymc
4

Apa yang dikatakan Microsoft tentang NTFS dan perubahan sensitivitas kasus.

Sepertinya Anda tidak perlu mengubah kernel untuk memungkinkan pencarian case sensitif pada jaringan.

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

.

Mengkonfigurasi sensitivitas case untuk nama file dan folder

Berlaku untuk: Windows Server 2003 R2

Untuk mengkonfigurasi sensitivitas kasus untuk nama file dan folder menggunakan antarmuka Windows Buka Microsoft Services untuk Sistem File Jaringan: klik Mulai, arahkan ke Program, arahkan ke Alat administratif, lalu klik Layanan Microsoft untuk Sistem File Jaringan.

Jika perlu, sambungkan ke komputer yang ingin Anda kelola.

Klik kanan Server untuk NFS, dan kemudian klik Properti.

Klik tab Penanganan Nama File.

Lakukan salah satu dari yang berikut:

Untuk mengaktifkan pencarian nama file dan direktori case-sensitive, pilih kotak centang Aktifkan lookup case-sensitive.

Untuk menonaktifkan pencarian nama file dan direktori case-sensitive, kosongkan kotak centang Aktifkan lookup case-sensitive.

Klik Terapkan.

Penting Perubahan ini tidak akan berlaku hingga Server untuk NFS dimulai kembali. Untuk informasi tentang cara menghentikan dan memulai Server untuk NFS, lihat Memulai dan menghentikan Server untuk NFS. Anda juga perlu menonaktifkan ketidakpekaan case kernel Windows agar Server untuk NFS mendukung nama file case-sensitive. Anda dapat menonaktifkan ketidakpekaan case kernel Windows dengan membersihkan kunci registri berikut ke 0: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel DWORD "obcaseinsensitive"

Untuk mengkonfigurasi sensitivitas kasus untuk nama file dan folder menggunakan baris perintah Buka command prompt.

Untuk mengaktifkan sensitivitas huruf, ketikkan yang berikut:

nfsadmin server [ComputerName] config casesensitivelookups = ya

Untuk menonaktifkan sensitivitas huruf dan secara opsional tentukan kasus nama file yang dikembalikan oleh Server untuk NFS, pada prompt perintah, ketikkan yang berikut ini:

nfsadmin server [ComputerName] config casesensitivelookups = tidak [ntfscase = {atas | lebih rendah | mempertahankan}]

Argumen> Nama Komputer = Nama komputer yang ingin Anda konfigurasi.

Penting Perubahan ini tidak akan berlaku hingga Server untuk NFS dimulai kembali. Untuk informasi tentang cara menghentikan dan memulai Server untuk NFS, lihat Memulai dan menghentikan Server untuk NFS.

Catatan Opsi ntfscase menetapkan sensitivitas case untuk sistem file NTFS. Sensitivitas case standar adalah preserved (simpan case). Untuk melihat sintaks lengkap untuk perintah ini, pada prompt perintah, ketik: nfsadmin server /?

.

Moab
sumber
1
Saya pikir ini tidak memungkinkan untuk memiliki banyak file dengan nama yang sama, yang ingin dia lakukan.
beatgammit
1
Maka dia harus melakukan hack registri.
Moab
Berlaku untuk: Windows Server 2008 R2
Behrouz.M
3

Microsoft menyatakan ;

Di NTFS, nama menyimpan case, tetapi tidak case sensitive.
NTFS tidak membedakan nama file berdasarkan kasus.

Mengizinkan sensitivitas huruf besar-kecil di Windows akan memungkinkan malware membuat file yang tidak dapat diakses atau dihapus oleh pengguna, sehingga tidak diperbolehkan karena alasan yang baik.

Bagaimanapun, saya cukup yakin bahwa jika Anda berhasil membuat NTFS case-sensitive, Windows akan macet dan instalasi ulang akan menjadi satu-satunya solusi.

harrymc
sumber
Anda juga benar bahwa itu menghadirkan masalah keamanan jika Anda melakukannya. "Misalnya, versi edit.exe yang terinfeksi dengan program jahat tipe kuda Trojan, dan bernama EDIT.EXE, dapat disimpan di direktori yang sama dengan edit.exe. Jika pengguna mengetikkan edit pada prompt perintah Windows , versi Trojan horse (EDIT.EXE) dapat dieksekusi alih-alih versi standar ".. technet.microsoft.com/en-us/library/cc732389.aspx
Moab
Mungkin tidak akan crash Windows kecuali Anda mengganti nama file / folder utama. Saya cukup yakin bahwa Windows memastikan untuk menggunakan case yang benar, pada kenyataannya, mereka bahkan merekomendasikannya.
beatgammit
Hmm, itu tjameson yang menarik. Bisakah Anda memberikan tautan ke rekomendasi itu?
trusktr
11
Jika malware mendapat akses tulis ke disk Anda, Anda memiliki masalah besar apakah sistem file Anda peka terhadap huruf besar atau kecil. #redherring
Leopd
3
Registry penuh dengan referensi ke file sistem dengan penggunaan kasus yang sangat tidak konsisten. Sensitivitas kasus akan menyebabkan kerusakan hebat.
kreemoweet