WinSetView 사용을 권장합니다. 아래 스크립트보다 더 확실한 방법입니다.
우리가 제일 익숙하게 생각하는 정렬 방법은 역시 이름을 기준으로 한 오름차순 정렬일 것입니다. 폴더 다음 파일이 나오고, ㄱ부터 시작해서 ㅎ까지 정렬하는 그런 정렬이요.
하지만 윈도는 자꾸만 날짜별 정렬을 강요하는 듯합니다. 아래 스크린샷처럼요.
이게 유용하다고 생각하는 사람은 그런가 보다 하고 넘어가겠지만, 나처럼 '정렬은 오직 이름 기준 오름차순만!'을 외치는 사람은 정말 싫습니다.
게다가 매번 이걸 이름 기준 오름차순으로 설정을 변경해도 자꾸 날짜 기준 정렬로 제멋대로 바꿔버립니다. 창을 닫았다 다시 열었을 뿐인데, 다시 제멋대로 날짜 기준 정렬로 되돌아가 있더군요.
구글 검색을 해보아도 틀에 박힌 답변만이 가득합니다.
알고 보니, 이 문제는 윈도의 버그 때문이었습니다.
기억상으로 이 문제가 윈도우 10이 처음 출시되었을 때부터 있었던 버그로 기억하고 있으니, 8년도 더 된 버그네요. 그런데 이 간단한 버그 하나를 못 고치고 있습니다.
'날짜별 정렬'이나 '유형별 정렬' 등은 전부 '분류 방법' 아래 위치해 있는데, 이걸 내부적으로는 Group View라고 부릅니다. 항목들을 그룹화해서 보여주는 것이니 틀린 말은 아니죠.
파일 탐색기 화면에서 이런 그룹 뷰를 보여줄 것인지를 결정하는 레지스트리 키가 하나 있습니다. GroupView
라고, 이름값 하는 키입니다. 이 값이 0이면 그룹뷰를 보여주지 않고, 그 이외의 값이면 보여주고... 그런 식이죠.
그런데 윈도에서 이 값을 저장할 때 0x00000000
을 저장해야 하는데 0xFFFFFFFF
를 저장하고 있더군요. 그래서 우리가 아무리 설정을 변경해도 0이 아닌 다른 값이 저장되었으니, 계속 그룹 뷰를 보여주었던 것입니다.
그래서 강제로 모든 폴더에 대해 그룹뷰를 해제하는 파워쉘 스크립트를 만들었습니다.
$ErrorActionPreference = "SilentlyContinue"
New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags" -Name "BagMRU Size" -Value 10000 -PropertyType DWORD -Force
New-ItemProperty -Path "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell" -Name "GroupView" -Value 0 -PropertyType DWORD -Force
Get-ChildItem "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags" | ForEach-Object {
Get-ChildItem "Registry::$_\Shell" | ForEach-Object {
New-ItemProperty -Path "Registry::$_" -Name "GroupView" -Value 0 -PropertyType DWORD -Force
}
Get-ChildItem "Registry::$_\ComDlg" | ForEach-Object {
New-ItemProperty -Path "Registry::$_" -Name "GroupView" -Value 0 -PropertyType DWORD -Force
}
Get-ChildItem "Registry::$_\ComDlgLegacy" | ForEach-Object {
New-ItemProperty -Path "Registry::$_" -Name "GroupView" -Value 0 -PropertyType DWORD -Force
}
}
먼저 레지스트리에 저장되는 폴더별 설정의 최대 개수를 5000개에서 10000개로 늘립니다.
그다음 새로운 폴더 보기 설정의 그룹 뷰 값을 0으로 설정합니다.
마지막으로 레지스트리에 저장된 모든 폴더 보기 설정의 그룹 뷰를 0으로 설정합니다.
위 코드를 NoGroupView.ps1
으로 저장한 후, 해당 폴더에서 명령 프롬프트를 열고 다음과 같이 입력하면 됩니다.
powershell -ExecutionPolicy Bypass -File "NoGroupView.ps1"