web-dev-qa-db-pt.com

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

Eu quero fazer com que o Windows 7 case-sensitive quando lê/escreve qualquer coisa no disco rígido (a unidade C, ou qualquer outra unidade NTFS).

Eu encontrei um vídeo via google que diz para mudar a chave do registro

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

para um valor de 1 ( fonte ).

Eu 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 de 0 tornará o Windows sensível a maiúsculas e minúsculas com sistemas de arquivos NTFS ( source ).

Tenho a sensação de 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 tornar o Windows 7 sensível a maiúsculas e minúsculas quando lê/escreve na unidade C (e qualquer outra unidade NTFS)?

37
trusktr

Você pode definir o valor do Registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive como 0, conforme sugerido por outros autores. Crie um arquivo chamado add.reg com 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 Cygwin para trabalhar com nomes de arquivos sensíveis a maiúsculas e minúsculas.

Para fazer isso, você precisa montar sistemas de arquivos NTFS com a opção posix=1 em 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ê será capaz de lidar com nomes de arquivos que diferenciam maiúsculas de minúsculas usando bash, mc, git etc.

25
Bass

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

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

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

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

O outro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath basicamente desativa a normalização de nomes de arquivos legados 8.3 usados ​​pelo DOS (que são todos em maiúsculas). Quando estiver ligado (padrão), ABC.TXT será exibido como Abc.txt, mas ainda assim estará acessível por todas as outras variações.

Para ser mais preciso:

Na verdade, depende do software que acessa o FS.

Se usar a API do WIN32 (que 99,9% do software faz), não fará distinção entre maiúsculas e minúsculas. Todos os softwares incorporados no Windows (como o Explorer, o Prompt de comando, o Internet Explorer e etc.) e todos os softwares de consumo que estão por aí usam WIN32 e são sempre insensíveis a maiúsculas e minúsculas.

Serviço NFS, Java e alguns outros são POSIX e eles obedecerão à configuração de registro 'obcaseinsensitive'. No entanto, desligando a opção pode realmente obter maiores problemas, porque este software pode criar arquivos que não são acessíveis a partir do próprio Windows e outro software Win32.

16
venimus

Para realmente criar 2 arquivos com o mesmo nome, mas caso diferente no mesmo diretório, você precisa instalar o Unix Services 3.5, mas isso só funciona no Windows de 32 bits. Então você precisa rodar 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 joga legal com os arquivos. Se você for renomear o segundo, o cursor salta para o primeiro. Além disso, a maioria dos aplicativos só pode abrir um dos arquivos, pois eles esperam um sistema de arquivos que não diferencia maiúsculas de minúsculas. Se você estiver em 64 bits, instale o Cygwin e altere-o para maiúsculas e minúsculas.

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

16
user1491819

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

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

Esta página recomenda configurar HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive para 0 para torná-lo sensível a maiúsculas e minúsculas. Acho que você já achou isso, e essa parece ser a maneira padrão de fazer isso (até mesmo o KB da Microsoft que você encontrou sugere isso).

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

EDIT: Cuidado, porém, alguns programas podem depender de insensibilidade ao caso.

EDIT: você provavelmente poderia usar uma partição UDF. Esse sistema de arquivos faz distinção entre maiúsculas e minúsculas e acho que funciona no Windows e no Linux.

Veja this e this .

4
beatgammit

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

Parece que você não precisa alterar o kernel para permitir pesquisas com distinção entre maiúsculas e minúsculas na rede.

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

.

Configurando a diferenciação de maiúsculas e minúsculas para nomes de arquivos e pastas

Aplica-se a: Windows Server 2003 R2

Para configurar a diferenciação de maiúsculas e minúsculas para nomes de arquivos e pastas usando a interface do Windows Abra Serviços Microsoft para sistema de arquivos de rede: clique em Iniciar, aponte para programas, aponte para Ferramentas administrativas e, em seguida, clique em Serviços Microsoft para sistema de arquivos de rede.

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

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

Clique na guia Manipulação de nome de arquivo.

Faça um dos seguintes:

Para habilitar pesquisas de nomes de arquivos e diretórios com diferenciação de maiúsculas e minúsculas, marque a caixa de seleção Habilitar pesquisas com diferenciação de maiúsculas e minúsculas.

Para desabilitar as pesquisas de nomes de arquivos e diretórios, desmarque a caixa de seleção Habilitar pesquisas com diferenciação de maiúsculas e minúsculas.

Clique em Aplicar.

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 diferenciação de maiúsculas e minúsculas do kernel do Windows para que o Server for NFS suporte nomes de arquivos sensíveis a maiúsculas e minúsculas. Você pode desabilitar a insensibilidade a maiúsculas e minúsculas do kernel do Windows, desmarcando a seguinte chave de registro para 0: HWLM\SYSTEM\CurrentControlSet\Control\Gerenciador de sessão\kernel DWORD “obcaseinsensitive”

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

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

servidor nfsadmin [nome_do_computador] config casesensitivelookups = yes

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

servidor nfsadmin [nome_do_computador] config casesensitivelookups = no [ntfscase = {upper | mais baixo | preservar}]

Argument> Computer Name = 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.

Observação A opção ntfscase define a diferenciação de maiúsculas e minúsculas para o sistema de arquivos NTFS. A diferenciação de maiúsculas e minúsculas padrão é preservar (caso de preservação). Para exibir a sintaxe completa desse comando, em um prompt de comando, digite: nfsadmin server /?

.

4
Moab

Microsoft estados ;

Em NTFS, os nomes preservam o caso, 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 diferenciação de maiúsculas e minúsculas no Windows permitiria que o malware criasse arquivos que o usuário não pode acessar ou excluir, portanto, isso não é permitido por um bom motivo.

Em qualquer caso, tenho certeza de que, se você conseguir tornar o NTFS sensível a maiúsculas e minúsculas, o Windows irá travar e a reinstalação será a única solução.

3
harrymc