Todas as versões do Windows diferenciam maiúsculas de minúsculas?


18

Sei que o sistema operacional Windows não diferencia maiúsculas de minúsculas. Isso é verdade para todos os sistemas operacionais Windows (do Windows 95 ao Windows 7)? Existe alguma configuração de registro para diferenciar maiúsculas de minúsculas do Windows?


2
Sim, assim como todas as versões do MS-DOS de onde esse atributo foi herdado. (É claro que o MS-DOS não preservou o caso, então as coisas avançaram :-).)
Richard

Não faz distinção entre maiúsculas e minúsculas em relação a quê? Nomes de arquivos? Senhas?
Peter Mortensen

Respostas:


15

Sim, isso é verdade para todas as versões do Windows. Não há como diferenciar maiúsculas de minúsculas do Windows. Lembre-se de que alguns aplicativos que foram originalmente desenvolvidos para Unix / Linux e depois portados podem fazer distinção entre maiúsculas e minúsculas. Cygwin, por exemplo, faz distinção entre maiúsculas e minúsculas. Esse comportamento é extremamente raro.


7
"Não há como tornar o Windows sensível a maiúsculas." não é muito preciso. Existem maneiras de fazer com que as partes do Windows diferenciam maiúsculas de minúsculas, conforme explicado nas outras respostas.
Julio

É verdade que, do ponto de vista do usuário , os nomes de arquivos do Windows não diferenciam maiúsculas de minúsculas e não há maneira (fácil) de mudar isso.
Julio

Alguns aspectos do Windows podem diferenciar maiúsculas de minúsculas, mas dependem dos recursos de outros PCs. Salvar em um diretório compartilhado que esteja realmente em um PC Linux permitirá que nomes de arquivos com distinção entre maiúsculas e minúsculas sejam usados. Isto é devido ao sistema de arquivos como @sleske disse, não porque "é Windows"
UtahJarhead

11
Isso não é inteiramente verdade. Você pode fazer versões diferentes do Windows e algumas versões da área de trabalho diferenciam maiúsculas de minúsculas com o Windows Services for UNIX.
Keltari

11
@ Matt Esta resposta não está correta (embora sejam respostas apropriadas postadas). Você simplesmente não tem a distinção entre maiúsculas e minúsculas ativada. superuser.com/questions/266110/… Eu tenho que arquivos um nomeado testfile e Testfile. /bIn/BaShnão funciona no meu sistema.
William

8

Na verdade, isso depende do subsistema API / Windows que você (seu programa) usa.

Se você usar a " API do Windows " (o padrão para aplicativos do Windows), os nomes de arquivos não diferenciam maiúsculas de minúsculas. No entanto, se você usar o subsistema POSIX (também conhecido como Windows Services for Unix), poderá ativar a distinção entre maiúsculas e minúsculas.

Consulte, por exemplo, este artigo de suporte da MS: Habilite o comportamento sensível a maiúsculas e minúsculas no Windows XP e Interix Subsystem ou SFU


5

Cygwin tenta emular o Unix. Portanto, ele precisa herdar a distinção entre maiúsculas e minúsculas para não quebrar os aplicativos. O Windows por si só não diferencia maiúsculas de minúsculas. É sobre o sistema de arquivos. Você pode ler mais sobre isso em Sistema de arquivos, Sistemas de arquivos no Microsoft Windows (Wikipedia).


Corrigir. NTFS é case-sensitive, está desactivada apenas no Windows. Pode-se habilitá-lo, mas é extremamente ... unsupportedpor assim dizer.
Apache

Isso é direcionado ao OP, não ao MijndertStuij, mas eu não queria pisar nos dedos dele. Ele merece o representante neste. Seja o FAT (como as versões originais do MS-DOS e Windows) ou NTFS (Windows NT e posterior), eles não diferenciam maiúsculas de minúsculas. Você notará um pouco essas diferenças se salvar os arquivos em um sistema de arquivos Linux no Samba (primo do compartilhamento de arquivos e impressoras).
amigos estão dizendo sobre uberlândia

Da página NTFS da Wikipedia: caracteres permitidos nos nomes de arquivos. - No espaço de nomes Posix, qualquer unidade de código UTF-16 (diferencia maiúsculas de minúsculas), exceto U + 0000 (NUL) e / (barra). No espaço para nome Win32, qualquer unidade de código UTF-16 (não diferencia maiúsculas de minúsculas), exceto U + 0000 (NUL) / (barra) \ (barra invertida): (dois pontos) * (asterisco)? (Ponto de interrogação) "(aspas) <(menor que)> (maior que) e | (
canal

Tente rodar /bIn/BaShem Cygwin e diga-me novamente que diferencia maiúsculas de minúsculas.
18715 Matt

5

A Microsoft adicionou um novo sinalizador que diferencia maiúsculas de minúsculas (atributo) que pode ser aplicado aos diretórios NTFS (pastas). Para diretórios que possuem esse sinalizador definido (ativado), todas as operações nos arquivos nesse diretório diferenciam maiúsculas de minúsculas, independentemente de FILE_FLAG_POSIX_SEMANTICS ter sido especificado. Isso significa que, se você tiver dois arquivos que diferem apenas por maiúsculas e minúsculas em um diretório marcado como maiúsculas e minúsculas, todos os aplicativos poderão acessá-los.

A partir do Windows 10 build 17107 , a Microsoft adicionou a capacidade de exibir e modificar esse sinalizador no comando fsutil.exe.

Para verificar se um diretório diferencia maiúsculas de minúsculas, execute o seguinte comando:

fsutil.exe file queryCaseSensitiveInfo <path>

Para marcar um diretório como sensível a maiúsculas ou minúsculas, respectivamente:

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

4

Isto é daqui . Você pode definir o HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivevalor do registro 0como outros autores sugeriram. Crie um arquivo nomeado add.regcom o seguinte conteúdo e execute-o.

Windows Registry Editor Version 5.00

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

Em seguida, use o Cygwin para trabalhar com nomes de arquivos que diferenciam maiúsculas de minúsculas.

Para fazer isso, você precisa montar sistemas de arquivos NTFS com a posix=1opção no seu /etc/fstab, como este artigo sugere. Aqui está um trecho do meu 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

Uma vez que o acima é feito, você vai ser capaz de lidar com casos sensíveis nomes de arquivos usando bash, mc, gitetc.

Certifique-se de reiniciar após editar os dois.


3

Barfieldmv está correto. O sistema de arquivos realmente faz distinção entre maiúsculas e minúsculas e os arquivos são armazenados com o caso apropriado. A camada de acesso a arquivos é responsável por remover o caso ao corresponder arquivos a novos descritores de arquivos


11
Você pode fornecer mais detalhes sobre como essa abstração entre o sistema de arquivos e o usuário funciona (por exemplo, fornecer um exemplo passo a passo)? Você também deve abordar as questões reais da operação em sistemas operacionais anteriores e se o comportamento que diferencia maiúsculas de minúsculas pode ser forçado.
MaQleod

Não poderei fornecer uma resposta completa hoje em dia, já que sou um grande nerd do Linux. No entanto, posso oferecer o seguinte. O Windows Services for Unix utiliza os mesmos sistemas de arquivos que o sistema operacional, especificamente, ao não usar as APIs que permitem a distinção entre maiúsculas e minúsculas. Veja: support.microsoft.com/kb/817921 para obter informações sobre como caso 'Preservar' é o mesmo que no entanto as camadas de acesso comum 'sensível' Caso permitir Caso 'Ignorância' :)
whardier

Você poderia dizer que o Windows não diferencia maiúsculas de minúsculas, mas apenas reconhece maiúsculas e minúsculas. Isso significa que ele (Windows) sabe se a letra está em maiúscula ou minúscula e aceita os dois. Não lê um ou outro como e erro.
IGRACH 17/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.