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?

prosseek
fonte
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.

nhinkle
fonte
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

sleske
fonte
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).

Mijndert Stuij
fonte
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
Alexander Popov
fonte
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.

William
fonte
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

mais difícil
fonte
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