파일 시스템과 관련하여 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.classShort.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.