¿Cómo hace que Windows 7 distinga entre mayúsculas y minúsculas con respecto al sistema de archivos?

37

Quiero que Windows 7 distinga entre mayúsculas y minúsculas cuando lee / escribe algo en el disco duro (la unidad C o cualquier otra unidad NTFS).

Encontré un video a través de google que dice cambiar la clave de registro

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

a un valor de 1 ( fuente ).

También encontré un elemento de soporte de Windows que dice algo sobre la modificación de la clave de registro

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

eso me lleva a suponer que poner un valor de 0 hará que Windows distinga entre mayúsculas y minúsculas con los sistemas de archivos NTFS ( fuente ).

Tengo la sensación de que la segunda solución es la respuesta, pero no estoy seguro y no quiero intentarlo sin estar seguro.

¿Alguien sabe con certeza cuál es la forma correcta de hacer que Windows 7 distinga entre mayúsculas y minúsculas cuando lee / escribe en la unidad C (y cualquier otra unidad NTFS)?

trusktr
fuente

Respuestas:

25

Puede establecer el HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivevalor del registro 0como lo sugirieron otros autores. Cree un archivo add.regcon el siguiente contenido y ejecútelo.

Windows Registry Editor Version 5.00

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

Luego use Cygwin para trabajar con nombres de archivo sensibles a mayúsculas y minúsculas.

Para hacerlo, debe montar sistemas de archivos NTFS con posix=1opción en su /etc/fstab, como sugiere este artículo . Aquí hay un fragmento de mi 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

Una vez que se lleva a cabo lo anterior, podrás hacer frente a mayúsculas y minúsculas nombres de archivo utilizando bash, mc, gitetc.

Bajo
fuente
66
Debe reiniciar para que esto surta efecto.
William
2
@William: Creo que solo necesita finalizar todos los procesos y servicios de Cygwin (como Apache , sshd , etc.). Eso debería ser suficiente, ya cygwin1.dllque se descargará de la RAM.
Bajo
3
Estoy hablando de HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
William
16

Para crear realmente 2 archivos con el mismo nombre pero con un caso diferente en el mismo directorio, debe instalar Unix Services 3.5, pero esto solo funciona en Windows de 32 bits. Luego debe ejecutar "C Shell" para crear los archivos. No puede crear los archivos a través del explorador. Una vez creado, el explorador no juega bien con los archivos. Si va a cambiar el nombre del segundo, el cursor salta al primero. Además, la mayoría de las aplicaciones solo pueden abrir uno de los archivos, ya que esperan un sistema de archivos que no distinga entre mayúsculas y minúsculas. Si tiene 64 bits, instale Cygwin y cámbielo a mayúsculas y minúsculas.

Intenté emular un sistema de archivos con mayúsculas y minúsculas de Linux para fines de depuración durante el desarrollo. Parece que el mejor enfoque es usar VMWare con una instancia de Ubuntu para el desarrollo.

usuario1491819
fuente
"usar VMWare con una instancia de Ubuntu para el desarrollo" => No es el caso con los juegos
Петър Петров
16

¡Todas estas configuraciones que puede encontrar en la web son para NFS, no para NTFS (tenga en cuenta la diferencia)!

NFS (Network File System) es un protocolo de red.

Por lo tanto, cambiar la clave de registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive NO cambiará nada de lo que desee.

NTFS distingue entre mayúsculas y minúsculas, pero la API de Windows NO lo hace , solo recuerda el caso del nombre de archivo. Esto significa que, a pesar de que su archivo se muestra AbC.TXT, todavía es accesible por abc.txty aBc.TxT. Esta es una limitación de Windows, no NTFS.

El otro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPathbásicamente desactiva la normalización de los nombres de archivo heredados 8.3 utilizados por DOS (que son todos mayúsculas). Cuando está activado (predeterminado) ABC.TXTse mostrará como Abc.txt, pero todas las demás variaciones aún podrán acceder a él.

Para ser más exactos:

En realidad, depende del software que accede al FS.

Si usa la API WIN32 (lo que hace el 99.9% del software) no distingue entre mayúsculas y minúsculas, haga lo que haga. Todo el software incorporado en Windows (como Explorer, símbolo del sistema, Internet Explorer, etc.) y todo el software de consumo que se encuentra en el mercado usa WIN32 y siempre distingue entre mayúsculas y minúsculas.

El Servicio NFS, Java y algunos otros son POSIX y obedecerán la configuración de registro 'obcaseinsensible'. Sin embargo, desactivar la opción podría en realidad causarle problemas mayores, ya que este software puede crear archivos que no son accesibles desde el propio Windows y otro software Win32.

venimus
fuente
3
En realidad, en un nivel FS antes del procesamiento adicional, distingue entre mayúsculas y minúsculas, sin embargo, NTFS traduce todos los nombres de archivo a mayúsculas y cuando se ingresa uno con caracteres en minúscula, lo traduce a mayúsculas y luego busca dicho archivo (consulte support.microsoft.com/ kb / 103657 )
Jeff F.
Tienes razón. Solo traté de explicarlo más simple.
venimus
Entonces, ¿cómo logra una versión de Java basada en Win32 encontrar "SHORT.class" frente a "Short.class" si están en el mismo directorio? No puedo creer que NO haya una llamada para hacer esto.
Ira Baxter
Creo que porque Java es POSIX
venimus
2
Estoy bastante seguro de que el tiempo de ejecución estándar de Java (es decir, de Oracle) no distingue entre mayúsculas y minúsculas en Windows. Si tratas de poner SHORT.classy Short.classen el mismo directorio, no funcionaría. (Por supuesto, si están dentro de un archivo .jar no hay problema.)
Harry Johnston
4

Creo que esto es lo que estás buscando:

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

Esta página recomienda establecer HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitiveen 0 para que sea sensible a mayúsculas y minúsculas. Sin embargo, creo que ya lo encontraste, y esta parece ser la forma estándar de hacerlo (incluso el KB de Microsoft que encontraste lo sugiere).

Parece que tienes que cambiar la configuración del kernel. Cuidado con las actualizaciones sin embargo.

EDITAR: Tenga cuidado, sin embargo, algunos programas pueden depender de la insensibilidad a mayúsculas y minúsculas.

EDITAR: Probablemente podría usar una partición UDF. Este sistema de archivos distingue entre mayúsculas y minúsculas y creo que funciona tanto en Windows como en Linux.

Mira esto y esto .

beatgammit
fuente
¿Puede publicar más información desde la página que enlaza, por favor? No copie todo, pero puede copiar el párrafo relevante y resumir el resto.
ChrisF
Bueno, toda la página solo es un párrafo. Sin embargo, haré una edición rápida.
beatgammit
Gracias tjameson. Con respecto a los programas que pueden depender de la insensibilidad a las mayúsculas y minúsculas, este es realmente un gran problema. Un programa podría buscar "WINDOWS" y no encontrarlo porque ahora es realmente "Windows", ¿verdad? Dispara, estoy perdido tratando de descubrir cómo copiar cosas de Linux a Windows, y me he encontrado en una situación en la que existen carpetas de la misma ortografía con diferentes mayúsculas en una ubicación.
trusktr
Bueno, lo único en lo que puedo pensar es en conflictos manualmente. Si copia archivos, Windows debería preguntarle si desea fusionar o hacer una copia o algo. No puedo recordar (yo también soy un hombre de Linux).
beatgammit
Según este artículo, esto solo funciona para subsistemas que no son Win32, por lo que no se aplica a NTFS.
harrymc
4

Lo que Microsoft tiene que decir sobre NTFS y el cambio de mayúsculas y minúsculas.

Parece que no tiene que cambiar el núcleo para permitir búsquedas de mayúsculas y minúsculas en la red.

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

.

Configuración de mayúsculas y minúsculas para nombres de archivos y carpetas

Se aplica a: Windows Server 2003 R2

Para configurar la distinción entre mayúsculas y minúsculas para los nombres de archivos y carpetas mediante la interfaz de Windows Abra Servicios de Microsoft para el Sistema de archivos de red: haga clic en Inicio, seleccione Programas, Herramientas administrativas y luego haga clic en Servicios de Microsoft para el Sistema de archivos de red.

Si es necesario, conéctese a la computadora que desea administrar.

Haga clic con el botón derecho en Servidor para NFS y luego haga clic en Propiedades.

Haga clic en la pestaña Manejo de nombre de archivo.

Haz una de las siguientes:

Para habilitar las búsquedas de archivos y nombres de directorio sensibles a mayúsculas y minúsculas, seleccione la casilla de verificación Activar búsquedas de mayúsculas y minúsculas.

Para deshabilitar las búsquedas de archivos y nombres de directorio sensibles a mayúsculas y minúsculas, desactive la casilla de verificación Habilitar búsquedas de mayúsculas y minúsculas.

Haz clic en Aplicar.

Importante Estos cambios no tendrán efecto hasta que se reinicie el Servidor para NFS. Para obtener información sobre cómo detener e iniciar el Servidor para NFS, consulte Inicio y detención del Servidor para NFS. También debe deshabilitar la distinción entre mayúsculas y minúsculas del kernel de Windows para que Servidor para NFS admita nombres de archivo sensibles a mayúsculas y minúsculas. Puede deshabilitar la insensibilidad a mayúsculas y minúsculas del kernel de Windows borrando la siguiente clave de registro a 0: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel DWORD "obcaseinsensitive"

Para configurar mayúsculas y minúsculas para nombres de archivos y carpetas utilizando la línea de comandos Abra el símbolo del sistema.

Para habilitar mayúsculas y minúsculas, escriba lo siguiente:

nfsadmin server [ComputerName] config casesensitivelookups = yes

Para deshabilitar la distinción entre mayúsculas y minúsculas y, opcionalmente, especificar el caso de los nombres de archivo devueltos por el Servidor para NFS, en el símbolo del sistema, escriba lo siguiente:

nfsadmin server [ComputerName] config casesensitivelookups = no [ntfscase = {upper | más bajo | preservar}]

Argumento> Nombre de la computadora = El nombre de la computadora que desea configurar.

Importante Estos cambios no tendrán efecto hasta que se reinicie el Servidor para NFS. Para obtener información acerca de cómo detener e iniciar el Servidor para NFS, consulte Inicio y detención del Servidor para NFS.

Nota La opción ntfscase establece la distinción entre mayúsculas y minúsculas para el sistema de archivos NTFS. La distinción entre mayúsculas y minúsculas es preservar (preservar mayúsculas y minúsculas). Para ver la sintaxis completa de este comando, en el símbolo del sistema, escriba: nfsadmin server /?

.

Moab
fuente
1
No creo que esto permita tener múltiples archivos con el mismo nombre, que es lo que quiere hacer.
beatgammit
1
Luego tendrá que hacer el hack de registro.
Moab
Se aplica a: Windows Server 2008 R2
Behrouz.M
3

Estados de Microsoft ;

En NTFS, los nombres conservan mayúsculas y minúsculas, pero no distinguen entre mayúsculas y minúsculas.
NTFS no hace distinción de nombres de archivos según el caso.

Permitir la distinción entre mayúsculas y minúsculas en Windows permitiría que el malware cree archivos a los que el usuario no pueda acceder o eliminar, por lo que no está permitido por una buena razón.

En cualquier caso, estoy bastante seguro de que si lograste que NTFS distinga entre mayúsculas y minúsculas, Windows se bloqueará y la reinstalación será la única solución.

harrymc
fuente
También tiene razón en que presenta un problema de seguridad si lo hace. "Por ejemplo, una versión de edit.exe infectada con un programa malicioso de tipo troyano, y denominada EDIT.EXE, podría almacenarse en el mismo directorio que edit.exe. Si un usuario escribiera edit en el símbolo del sistema de Windows , la versión del caballo de Troya (EDIT.EXE) podría ejecutarse en lugar de la versión estándar ".. technet.microsoft.com/en-us/library/cc732389.aspx
Moab
Probablemente no bloqueará Windows a menos que cambie el nombre de los archivos / carpetas clave. Estoy bastante seguro de que Windows se asegura de usar el caso correcto, de hecho, incluso lo recomiendan.
beatgammit 03 de
Hmm, eso es interesante tjameson. ¿Puede proporcionar un enlace a esa recomendación?
trusktr
11
Si el malware obtiene acceso de escritura a su disco, tiene grandes problemas si su sistema de archivos distingue entre mayúsculas y minúsculas o no. #redherring
Leopd
3
El Registro está repleto de referencias a archivos del sistema con un uso de mayúsculas y minúsculas inconsistencias. La sensibilidad a mayúsculas y minúsculas provocaría una rotura masiva.
kreemoweet