Como você torna o Windows 7 totalmente sensível a maiúsculas e minúsculas em relação ao sistema de arquivos?


37

Quero tornar o Windows 7 com distinção entre maiúsculas e minúsculas quando lê / grava qualquer coisa no disco rígido (a unidade C ou qualquer outra unidade NTFS).

Encontrei um vídeo via google que diz para alterar a chave do registro

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

para um valor de 1 ( origem ).

Também encontrei um item de suporte do Windows que diz algo sobre como modificar a chave do registro

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

isso me leva a supor que colocar um valor 0 tornará o Windows sensível a maiúsculas e minúsculas nos sistemas de arquivos NTFS ( origem ).

Sinto que a segunda solução é a resposta, mas não tenho certeza e não quero tentar sem ter certeza.

Alguém sabe ao certo qual é a maneira correta de diferenciar maiúsculas de minúsculas do Windows 7 quando lê / grava na unidade C (e em qualquer outra unidade NTFS)?

Respostas:


25

Você pode definir o HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitivevalor do registro 0como sugerido por outros autores. 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.


6
Você deve reiniciar para que isso entre em vigor.
William

2
@ William: Eu acredito que você só precisa finalizar todos os processos e serviços Cygwin (como Apache , sshd , etc.). Isso deve ser o suficiente, pois cygwin1.dllserá descarregado da RAM.
Bass

3
Estou falando de HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/pt-br/kb/929110
William

16

Para realmente criar 2 arquivos com o mesmo nome, mas com maiúsculas e minúsculas no mesmo diretório, é necessário instalar o Unix Services 3.5, mas isso funciona apenas no Windows de 32 bits. Então você precisa executar o "C Shell" para criar os arquivos. Você não pode criar os arquivos através do explorer. Uma vez criado, o explorer não funciona bem com os arquivos. Se você for renomear o segundo, o cursor pula para o primeiro. Além disso, a maioria dos aplicativos pode abrir apenas um dos arquivos, pois espera um sistema de arquivos que não diferencie maiúsculas de minúsculas. Se você estiver em 64 bits, instale o Cygwin e mude para maiúsculas e minúsculas.

Eu estava tentando emular um sistema de arquivos que diferenciava maiúsculas de minúsculas do Linux para fins de depuração durante o desenvolvimento. Parece que a melhor abordagem é usar o VMWare com uma instância do Ubuntu para desenvolvimento.


"usar VMWare com uma instância do Ubuntu para o desenvolvimento" => Não é o caso com os jogos
Петър Петров

16

Todas essas configurações que você pode encontrar na Web são para NFS e não para NTFS (observe a diferença)!

NFS (Network File System) é um protocolo de rede.

Assim, alterar a chave do Registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive NÃO mudará o que você deseja.

O NTFS faz distinção entre maiúsculas e minúsculas, mas a API do Windows NÃO é , apenas se lembra do caso do nome do arquivo. Isso significa que, apesar de seu arquivo ser exibido, AbC.TXTele ainda pode ser acessado por abc.txte aBc.TxT. Essa é uma limitação do Windows, não do NTFS.

O outro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPathbasicamente desativa a normalização dos nomes de arquivos 8.3 herdados usados ​​pelo DOS (que são todos caps). Quando ativado (padrão) ABC.TXTserá exibido como Abc.txt, mas ainda estará acessível por todas as outras variações.

Para ser mais preciso:

Na verdade, depende do software que acessa o FS.

Se ele usa a API do WIN32 (que 99,9% do software faz), isso não faz distinção entre maiúsculas e minúsculas. Todos os softwares internos do Windows (como Explorer, prompt de comando, Internet Explorer e etc.) e todos os softwares de consumo lá fora usam WIN32 e sempre diferenciam maiúsculas de minúsculas.

O Serviço NFS, Java e alguns outros são POSIX e eles obedecerão à configuração de registro 'obcaseinsensitive'. No entanto, desativar a opção pode causar problemas maiores, porque esse software pode criar arquivos que não são acessíveis pelo próprio Windows e por outro software Win32.


3
Na verdade, no nível FS, antes do processamento adicional, é sensível a maiúsculas e minúsculas; no entanto, o NTFS converte todos os nomes de arquivos em maiúsculas e, quando um com caracteres minúsculos é inserido, converte-o em maiúsculas e depois procura o arquivo (consulte support.microsoft.com/ kb / 103657 )
Jeff F.

Você está certo. Eu apenas tentei explicar mais simples.
venimus

Então, como uma versão do java baseada em Win32 consegue encontrar "SHORT.class" vs. "Short.class" se eles estão no mesmo diretório? Não acredito que não há necessidade de fazer isso.
Ira Baxter

Acho que é porque Java é POSIX
venimus

2
Tenho certeza de que o tempo de execução Java padrão (ou seja, da Oracle) não diferencia maiúsculas de minúsculas no Windows. Se você tentasse colocar SHORT.classe Short.classno mesmo diretório, não funcionaria. (Claro, se eles estão dentro de um arquivo .jar não há nenhum problema.)
Harry Johnston

4

Eu acho que é isso que você está procurando:

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

Esta página recomenda definir HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive0 para diferenciar maiúsculas de minúsculas. Eu acho que você já encontrou isso, e isso parece a maneira padrão de fazê-lo (até o Microsoft KB que você encontrou sugere).

Parece que você precisa alterar as configurações do kernel. Cuidado com as atualizações embora.

EDIT: Cuidado, porém, alguns programas podem depender da distinção entre maiúsculas e minúsculas.

Edição: você provavelmente poderia usar uma partição UDF. Este sistema de arquivos diferencia maiúsculas de minúsculas e acho que funciona tanto no Windows quanto no Linux.

Veja isso e isso .


Você pode postar mais informações na página que você vincula, por favor. Não copie a coisa toda, mas você pode copiar o parágrafo relevante e resumir o restante.
ChrisF

Bem, a página inteira é apenas um parágrafo. Eu vou fazer uma edição rápida embora.
Beatgammit 03/04

Obrigado tjameson. Em relação aos programas que podem depender da distinção entre maiúsculas e minúsculas, esse é realmente um grande problema. Um programa pode procurar "WINDOWS" e não encontrá-lo, porque agora é realmente "Windows", certo? Atire, estou sem entender como copiar as coisas do Linux para o Windows, e me deparei com uma situação em que pastas da mesma ortografia com letras maiúsculas existem em um único local.
trusktr

Bem, a única coisa em que consigo pensar é em conflitos manualmente. Se você copiar arquivos, o Windows deverá perguntar se você deseja mesclar ou fazer uma cópia ou algo assim. Não me lembro (sou um homem linux).
Beatgammit 03/04

De acordo com este artigo, isso funciona apenas para subsistemas que não são do Win32, portanto não se aplica ao NTFS.
harrymc

4

O que a Microsoft tem a dizer sobre NTFS e alteração de distinção entre maiúsculas e minúsculas.

Parece que você não precisa alterar o kernel para permitir pesquisas que diferenciam maiúsculas de minúsculas na rede.

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

.

Configurando distinção entre maiúsculas e minúsculas para nomes de arquivos e pastas

Aplica-se a: Windows Server 2003 R2

Para configurar a distinção entre maiúsculas e minúsculas para nomes de arquivos e pastas usando a interface do Windows Abra o Microsoft Services para Network File System: clique em Iniciar, aponte para Programas, aponte para Ferramentas Administrativas e clique em Serviços Microsoft para Network File System.

Se necessário, conecte-se ao computador que deseja gerenciar.

Clique com o botão direito do mouse em Server for NFS e clique em Propriedades.

Clique na guia Tratamento de nome de arquivo.

Faça um dos seguintes:

Para habilitar pesquisas de nome de arquivo e diretório com distinção entre maiúsculas e minúsculas, marque a caixa de seleção Ativar pesquisas com distinção entre maiúsculas e minúsculas.

Para desativar as pesquisas que diferenciam maiúsculas de minúsculas de arquivos e nomes de diretórios, desmarque a caixa de seleção Ativar pesquisas que diferenciam maiúsculas de minúsculas.

Clique em Apply.

Importante Essas alterações não terão efeito até que o Server for NFS seja reiniciado. Para obter informações sobre como parar e iniciar o Server for NFS, consulte Iniciando e Parando o Server for NFS. Você também precisa desabilitar a distinção entre maiúsculas e minúsculas do kernel do Windows para que o Server for NFS suporte nomes de arquivos com distinção entre maiúsculas e minúsculas. Você pode desativar a distinção entre maiúsculas e minúsculas do kernel do Windows limpando a seguinte chave do registro para 0: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel DWORD “obcaseinsensitive”

Para configurar a distinção entre maiúsculas e minúsculas para nomes de arquivos e pastas usando a linha de comando Abra o prompt de comando.

Para habilitar a distinção entre maiúsculas e minúsculas, digite o seguinte:

servidor nfsadmin [ComputerName] config casesensitivelookups = yes

Para desativar a distinção entre maiúsculas e minúsculas e, opcionalmente, especificar os nomes dos arquivos retornados pelo Server for NFS, em um prompt de comando, digite o seguinte:

servidor nfsadmin [ComputerName] config casesensitivelookups = no [ntfscase = {upper | abaixar | preservar}]

Argumento> Nome do Computador = O nome do computador que você deseja configurar.

Importante Essas alterações não terão efeito até que o Server for NFS seja reiniciado. Para obter informações sobre como parar e iniciar o Server for NFS, consulte Iniciando e Parando o Server for NFS.

Nota A opção ntfscase define a distinção entre maiúsculas e minúsculas para o sistema de arquivos NTFS. A distinção entre maiúsculas e minúsculas é preservar (preservar maiúsculas e minúsculas). Para visualizar a sintaxe completa deste comando, em um prompt de comandos, digite: nfsadmin server /?

.


11
Não acho que isso permita ter vários arquivos com o mesmo nome, que é o que ele quer fazer.
beatgammit

11
Então ele terá que fazer o hack do registro.
Moab

Aplica-se a: Windows Server 2008 R2
Behrouz.M

3

Estados da Microsoft ;

No NTFS, os nomes preservam maiúsculas e minúsculas, mas não diferenciam maiúsculas de minúsculas.
O NTFS não faz distinção de nomes de arquivos com base no caso.

Permitir a distinção entre maiúsculas e minúsculas no Windows permitirá que o malware crie arquivos que o usuário não pode acessar ou excluir, portanto, não é permitido por um bom motivo.

De qualquer forma, tenho certeza de que, se você conseguiu diferenciar maiúsculas de minúsculas do NTFS, o Windows falhará e a reinstalação será a única solução.


Você também está correto ao apresentar um problema de segurança, se o fizer. "Por exemplo, uma versão do edit.exe infectada com um programa malicioso do tipo cavalo de Tróia, com o nome EDIT.EXE, poderia ser armazenada no mesmo diretório que o edit.exe. Se um usuário digitar edit no prompt de comando do Windows , a versão do Trojan Horse (EDIT.EXE) pode ser executada em vez da versão padrão ".. technet.microsoft.com/en-us/library/cc732389.aspx
Moab

Provavelmente não travará o Windows, a menos que você renomeie os arquivos / pastas principais. Tenho certeza de que o Windows se certifica de usar o caso correto; na verdade, eles até o recomendam.
beatgammit

Hmm, isso é interessante, tjameson. Você pode fornecer um link para essa recomendação?
trusktr

11
Se o malware obtiver acesso de gravação ao seu disco, você terá grandes problemas, independentemente de o sistema de arquivos diferenciar maiúsculas de minúsculas. #redherring
Leopd

3
O Registro está repleto de referências a arquivos do sistema com uso de caso extremamente inconsistente. A distinção entre maiúsculas e minúsculas causaria quebra maciça.
Kreemoweet
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.