파일 시스템과 관련하여 Windows 7의 대소 문자를 어떻게 구분합니까?


37

Windows 7이 하드 드라이브 (C 드라이브 또는 다른 NTFS 드라이브)의 내용을 읽거나 쓸 때 대 / 소문자를 구분하고 싶습니다.

레지스트리 키를 변경하라는 Google 비디오를 찾았습니다.

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

1 값 ( source )으로

또한 레지스트리 키 수정에 대한 내용이 들어있는 Windows 지원 항목을 찾았습니다.

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

값을 0으로 설정하면 NTFS 파일 시스템 ( source )에서 Windows가 대소 문자를 구분한다고 가정 합니다.

나는 두 번째 해결책이 답이라고 생각하지만 확실하지 않으며 확실하지 않고 시도하고 싶지 않습니다.

누구나 C 드라이브 (및 다른 NTFS 드라이브)를 읽거나 쓸 때 Windows 7이 대소 문자를 구분하는 올바른 방법이 무엇인지 확실히 알고 있습니까?

답변:


25

다른 작성자가 제안한대로 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive레지스트리 값을 설정할 수 있습니다 0. add.reg다음 컨텐츠로 이름이 지정된 파일을 작성 하고 실행하십시오.

Windows Registry Editor Version 5.00

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

그런 다음 Cygwin 을 사용 하여 대소 문자를 구분하는 파일 이름으로 작업하십시오.

이렇게하려면 이 문서에서 제안하는 것처럼 posix=1옵션에 NTFS 파일 시스템을 마운트해야 합니다. 내 스 니펫은 다음과 같습니다 ./etc/fstabfstab

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

위의 작업이 완료되면, 당신은 사용하여 대소 문자를 구분 파일 이름을 처리 할 수 있습니다 bash, mc, git등


6
이를 적용하려면 다시 시작해야합니다.
— William

2
@ William : 모든 Cygwin 프로세스와 서비스 ( Apache , sshd 등) 만 종료하면된다고 생각합니다 . cygwin1.dllRAM에서 언로드 되므로 충분 합니다.
— 베이스

3
나는 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive support.microsoft.com/en-us/kb/929110
— William

16

동일한 디렉토리에 이름은 같지만 대소 문자가 다른 2 개의 파일을 실제로 만들려면 Unix Services 3.5를 설치해야하지만 32 비트 Windows에서만 작동합니다. 그런 다음 "C Shell"을 실행하여 파일을 작성해야합니다. 탐색기를 통해 파일을 만들 수 없습니다. 일단 생성되면 탐색기는 파일을 잘 다루지 않습니다. 두 번째 이름을 변경하면 커서가 첫 번째 이름으로 이동합니다. 또한 대부분의 응용 프로그램은 대소 문자를 구분하지 않는 파일 시스템을 기대하기 때문에 파일 중 하나만 열 수 있습니다. 64 비트를 사용하는 경우 Cygwin을 설치하고 대소 문자를 구분하십시오.

개발 중에 디버깅 목적으로 Linux 대소 문자 구분 파일 시스템을 에뮬레이트하려고했습니다. 더 나은 접근 방법은 VMWare를 Ubuntu 인스턴스와 함께 사용하여 개발하는 것입니다.


"개발을 위해 Ubuntu 인스턴스와 함께 VMWare 사용"=> 게임의 경우가 아님
— Петър Петров

16

웹에서 찾을 수있는이 모든 설정 은 NTFS가 아닌 NFS에 대한 것입니다 (차이점에 유의하십시오)!

NFS (Network File System)는 네트워크 프로토콜입니다.

따라서 레지스트리 키를 변경해도 원하는 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive 것은 변경 되지 않습니다 .

NTFS는 대소 문자를 구분 하지만 Windows API는 NOT 이며 파일 이름 대소 문자 만 기억합니다. 로 파일에도 불구하고 표시되는이 평균 AbC.TXT여전히에서 액세스 abc.txt하고 aBc.TxT. 이것은 NTFS가 아니라 Windows의 제한 사항입니다.

다른 하나는 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\DontPrettyPath기본적으로 DOS에서 사용되는 레거시 8.3 파일 이름의 정규화를 끕니다 (모두 대문자 임). 켜져 있으면 (기본값) ABC.TXT로 표시 Abc.txt되지만 다른 모든 변형에서 여전히 액세스 할 수 있습니다.

보다 정확하게하기 위해 :

실제로 FS에 액세스하는 소프트웨어에 따라 다릅니다.

WIN32 API (소프트웨어의 99.9 %가 사용)를 사용하는 경우 사용자가 수행하는 모든 작업은 대소 문자를 구분하지 않습니다. Windows의 모든 내장 소프트웨어 (예 : Explorer, 명령 프롬프트, Internet Explorer 등) 및 모든 소비자 소프트웨어는 WIN32를 사용하며 항상 대소 문자를 구분하지 않습니다.

NFS 서비스, Java 및 기타 일부는 POSIX이며 'obcaseinsensitive'레지스트리 설정을 따릅니다. 그러나이 소프트웨어를 사용하면 Windows 자체 및 기타 Win32 소프트웨어에서 액세스 할 수없는 파일을 만들 수 있으므로 옵션을 끄면 실제로 더 큰 문제가 발생할 수 있습니다.


3
실제로 추가 처리 전에 FS 수준에서는 대 / 소문자를 구분하지만 NTFS는 모든 파일 이름을 모두 대문자로 변환하고 소문자를 가진 이름을 입력하면 대문자로 변환 된 다음 해당 파일을 찾습니다 ( support.microsoft.com/ 참조) . kb / 103657 )
— Jeff F.

네 말이 맞아 방금 간단하게 설명하려고했습니다.
— venimus

Java의 Win32 기반 버전이 "SHORT.class"와 "Short.class"가 같은 디렉토리에있는 경우 어떻게 찾을 수 있습니까? 나는 이것을 할 필요가 없다고 믿을 수 없다.
— Ira Baxter

자바는 POSIX이기 때문에
— venimus

2
나는 매우 확실 (오라클 즉,) 표준 자바 런타임이라고 해요 하지 대소 문자를 구분하지 Windows에서. 당신은 넣어 시도하는 경우 SHORT.class와 Short.class같은 디렉토리에, 그것이 작동하지 않을 것입니다. (물론 .jar 파일 안에 있으면 아무런 문제가 없습니다.)
— Harry Johnston

4

나는 이것이 당신이 찾고있는 것이라고 생각합니다.

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

이 페이지는 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\ dword:ObCaseInsensitive대소 문자를 구분하기 위해 0으로 설정 하는 것이 좋습니다 . 나는 당신이 이것을 이미 발견했다고 생각하며, 이것은 그것을하는 표준 방법처럼 보입니다 (발견 한 Microsoft KB조차도 그것을 제안합니다).

커널 설정을 변경해야 할 것 같습니다. 그래도 업데이트에주의하십시오.

편집 : 그러나 일부 프로그램은 대소 문자를 구분하지 않을 수 있습니다.

편집 : 아마도 UDF 파티션을 사용할 수 있습니다. 이 파일 시스템은 대소 문자를 구분하며 Windows와 Linux 모두에서 작동한다고 생각합니다.

참조 이 와 이 .


링크 한 페이지에서 추가 정보를 게시 할 수 있습니까? 전체를 복사하지 말고 관련 단락을 복사하고 나머지를 요약 할 수 있습니다.
— ChrisF

글쎄, 전체 페이지는 단락입니다. 그래도 빨리 편집하겠습니다.
— beatgammit

tjameson 감사합니다. 대소 문자를 구분하지 않는 프로그램의 경우 실제로 큰 문제입니다. 프로그램이 "WINDOWS"를 찾은 후 실제로 "Windows"이기 때문에 찾지 못할 수 있습니다. 쏴, 나는 리눅스에서 Windows로 물건을 복사하는 방법을 알아 내려고 노력하고 있는데, 한 마디로 다른 철자와 같은 철자가 동일한 폴더가있는 상황에서 나 자신을 발견했다.
— trusktr

글쎄, 내가 생각할 수있는 유일한 것은 수동으로 충돌하는 것입니다. 파일을 복사하면 Windows에서 병합 또는 복사 할 것인지 묻습니다. 기억이 안납니다 (저는 직접 리눅스 사람입니다).
— beatgammit

이 기사 에 따르면 이것은 Win32 이외의 서브 시스템에서만 작동하므로 NTFS에는 적용되지 않습니다.
— harrymc

4

NTFS 및 대소 문자 구분 변경에 대한 Microsoft의 의견.

네트워크에서 대소 문자 구분 조회를 허용하기 위해 커널을 변경할 필요가없는 것 같습니다.

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

.

파일 및 폴더 이름에 대한 대소 문자 구분 구성

적용 대상 : Windows Server 2003 R2

Windows 인터페이스를 사용하여 파일 및 폴더 이름의 대 / 소문자 구분을 구성하려면 네트워크 파일 시스템 용 Microsoft 서비스를 엽니 다. 시작을 누르고 프로그램, 관리 도구를 차례로 가리킨 다음 네트워크 파일 시스템 용 Microsoft 서비스를 누릅니다.

필요한 경우 관리하려는 컴퓨터에 연결하십시오.

NFS 용 서버를 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭합니다.

파일 이름 처리 탭을 클릭하십시오.

다음 중 하나를 수행하십시오.

대소 문자 구분 파일 및 디렉토리 이름 조회를 사용하려면 대소 문자 구분 조회 사용 선택란을 선택하십시오.

대소 문자 구분 파일 및 디렉토리 이름 조회를 사용하지 않으려면 대소 문자 구분 조회 사용 선택란을 지우십시오.

적용을 클릭하십시오.

중요 NFS 용 서버가 다시 시작될 때까지 이러한 변경 사항이 적용되지 않습니다. NFS 용 서버를 중지 및 시작하는 방법에 대한 자세한 내용은 NFS 용 서버 시작 및 중지를 참조하십시오. NFS 용 서버가 대소 문자를 구분하는 파일 이름을 지원하려면 Windows 커널 대소 문자 구분을 비활성화해야합니다. 다음 레지스트리 키를 0으로 지우면 Windows 커널 대 / 소문자 구분을 비활성화 할 수 있습니다. HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ kernel DWORD“obcaseinsensitive”

명령 줄을 사용하여 파일 및 폴더 이름의 대 / 소문자 구분을 구성하려면 명령 프롬프트를 엽니 다.

대 / 소문자를 구분하려면 다음을 입력하십시오.

nfsadmin 서버 [ComputerName] 구성 casesensitivelookups = yes

대소 문자 구분을 사용하지 않고 선택적으로 NFS 용 서버가 리턴 한 파일 이름의 대소 문자를 지정하려면 명령 프롬프트에 다음을 입력하십시오.

nfsadmin 서버 [ComputerName] 구성 casesensitivelookups = no [ntfscase = {upper | 낮은 | 보호하다}]

인수> 컴퓨터 이름 = 구성하려는 컴퓨터의 이름입니다.

중요 NFS 용 서버가 다시 시작될 때까지 이러한 변경 사항이 적용되지 않습니다. NFS 용 서버를 중지 및 시작하는 방법에 대한 자세한 내용은 NFS 용 서버 시작 및 중지를 참조하십시오.

참고 ntfscase 옵션은 NTFS 파일 시스템의 대소 문자 구분을 설정합니다. 기본 대 / 소문자 구분은 보존 (대소 문자 보존)입니다. 이 명령의 전체 구문을 보려면 명령 프롬프트에서 다음을 입력하십시오. nfsadmin server /?

.


1
나는 이것이 동일한 이름을 가진 여러 파일을 가질 수 있다고 생각하지 않습니다.
— beatgammit

1
그런 다음 레지스트리 해킹을 수행해야합니다.
— Moab

적용 대상 : Windows Server 2008 R2
— Behrouz.M

3

마이크로 소프트 상태 ;

NTFS에서 이름은 대소 문자를 유지하지만 대소 문자를 구분하지 않습니다.
NTFS는 대소 문자에 따라 파일 이름을 구분하지 않습니다.

Windows에서 대 / 소문자 구분을 허용하면 맬웨어가 사용자가 액세스하거나 삭제할 수없는 파일을 만들 수 있으므로 적절한 이유로 허용되지 않습니다.

어쨌든 NTFS를 대 / 소문자를 구분하여 관리하면 Windows가 중단되고 다시 설치하는 것이 유일한 해결책이 될 것입니다.


또한 보안 문제가있는 경우에도 올바른 내용입니다. "예를 들어, 트로이 목마 악성 프로그램에 감염되어 EDIT.EXE라는 edit.exe 버전은 edit.exe와 동일한 디렉토리에 저장 될 수 있습니다. 사용자가 Windows 명령 프롬프트에서 edit를 입력해야하는 경우 , 표준 버전 대신 트로이 목마 버전 (EDIT.EXE)을 실행할 수 있습니다. ".. technet.microsoft.com/en-us/library/cc732389.aspx
— Moab

키 파일 / 폴더의 이름을 바꾸지 않으면 Windows가 충돌하지 않을 것입니다. Windows가 올바른 대소 문자를 사용해야한다는 사실을 확신합니다. 사실 그들은 심지어 그것을 권장하기도합니다.
— beatgammit

흠, 그것은 흥미로운 tjameson입니다. 해당 권장 사항에 대한 링크를 제공 할 수 있습니까?
— trusktr

11
맬웨어가 디스크에 대한 쓰기 액세스 권한을 얻는 경우 파일 시스템의 대소 문자 구분 여부에 큰 문제가 있습니다. #redherring
— Leopd

3
레지스트리는 대소 문자가 일관되지 않은 시스템 파일에 대한 참조로 가득 차 있습니다. 대 / 소문자를 구분하면 막대한 손상이 발생합니다.
— kreemoweet 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.