본문 바로가기

디스크와 파티션

레지스트리를 통해 노출을 원치 않는 드라이브를 탐색기에서 숨기고 접근을 막기

특정 드라이브를 숨기고 접근을 막고 싶다면?

윈도우에서는 자신이 원하는 드라이브를 윈도우 탐색기에서 숨기거나 윈도우 탐색기를 통한 접근을 제한할 수 있습니다. 이것은 로컬 그룹 정책 편집기(gpedit.msc) 를 통해 간단하게 설정할 수 있죠.


▼ 드라이브 숨기기

gpedit.msc -> 사용자 구성 -> 관리 템플릿 -> Windows 구성 요소 -> Windows 탐색기 -> 내 컴퓨터에 있는 지정된 드라이브 숨기기



▼ 드라이브 접근 막기

gpedit.msc -> 사용자 구성 -> 관리 템플릿 -> Windows 구성 요소 -> Windows 탐색기 -> 내 컴퓨터에 있는 드라이브 액세스 금지



하지만 로컬 그룹 정책 편집기를 통하는 방법은 A, B, C, D 이 네 가지 드라이브, 또는 모든 드라이브에 대한 설정만 할 수 있습니다. 그래서 그 외의 좀 더 다양한 구성의 드라이브를 숨기거나 접근을 제한하기 위해서는 레지스트리를 활용해야 합니다.




레지스트리를 통해 특정 드라이브를 숨기거나 접근을 제한하기

먼저 레지스트리를 알아보기 전에 드라이브마다 지정된 고유의 값이 있는데 이는 아래와 같습니다.

드라이브 값
Drive 2^n Dec Hex Drive 2^n Dec Hex
A 2^0 1 1 N 2^13 8192 2000
B 2^1 2 2 O 2^14 16384 4000
C 2^2 4 4 P 2^15 32768 8000
D 2^3 8 8 Q 2^16 65536 10000
E 2^4 16 10 R 2^17 131072 20000
F 2^5 32 20 S 2^18 262144 40000
G 2^6 64 40 T 2^19 524288 80000
H 2^7 128 80 U 2^20 1048576 100000
I 2^8 256 100 V 2^21 2097152 200000
J 2^9 512 200 W 2^22 4194304 400000
K 2^10 1024 400 X 2^23 8388608 800000
L 2^11 2048 800 Y 2^24 16777216 1000000
M 2^12 4096 1000 Z 2^25 33554432 2000000
A 지정 = 1
AB 지정 = 1 + 2 = 3
ABC 지정 = 1 + 2 + 4 = 7
모든 드라이브 지정 = 1 + 2 .... + 33554432 = 67108863(Hex 3FFFFFF)


즉, A 를 지정하려면 1 을, B 를 지정하려면 2 를, A 와 B 를 함께 지정하려면 이 둘을 더한 3 이 되는 것이죠. 이런 식으로 원하는 드라이브들을 지정할 수 있습니다. 참고로 모든 드라이브를 지정하면 10진수로는 67108863 16진수로는 3FFFFFF 이 됩니다. 간단하죠?


이제 이 내용을 토대로 아래의 레지스트리를 보시길 바랍니다.


특정 드라이브를 숨기는 레지스트리 (ex. Z: 드라이브)

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoDrives"=dword:02000000

특정 드라이브로의 접근을 제한하는 레지스트리 (ex Z: 드라이브)

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoViewOnDrive"=dword:02000000


간단하죠? 참고로 reg.exe 명령이나 .reg 레지스트리 파일에서는 dword 값을 16진수 형태로 입력해 주어야 합니다. 그래서 위의 레지스트리들은 순서대로 Z: 드라이브를 숨기고 Z: 드라이브로의 접근을 막는 것이 되는 것이죠.

이제 동시에 여러 드라이브를 지정할 때에는 각 드라이브들의 값을 더해야 하죠. 근데 이게 10진수로는 계산이 얼른 되는데 이를 reg.exe 명령이나 .reg 파일에서 사용하기 위해 16진수로 변환하고자 할 때에는 좀 어려울 수 있습니다. 그럴 땐 미리 소개해드린 아래의 프로그램을 사용하시면 편리합니다.

  HDOD - 간단한 Hex, Dec, Oct, Bin 숫자 변환


아무튼 reg 명령이나 .reg 레지스트리 파일에서는 이렇게 사용하시구요. 간단하게 레지스트리 편집기(regedit.exe)를 통해 직접 작업하시려면 아래와 같이 하시면 됩니다. 예제를 보시죠.


예제 1


E: 드라이브와 F: 드라이브를 탐색기에서 숨기고, 이 중에서 F: 드라이브는 탐색기를 통한 접근도 막습니다.

자 작업을 시작하기 전에 먼저 계산을 해보면 아래와 같습니다. [계산은 10진수로 계산하겠습니다.]

드라이브 숨김(NoDrives) : E + F -> 16 + 32 -> 48
드라이브 제한(NoViewOnDrive) : F -> 32


그럼 이를 토대로 레지스트리를 편집해 보도록 하죠.

01. 실행 또는 시작 메뉴의 검색란을 통해 레지스트리 편집기(regedit.exe)를 실행한 후 다음의 레지스트리 키로 이동합니다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]

02. 해당 레지스트리 키로 이동하였으면 Dword 값을 생성합니다. 이후 값의 이름을 NoDrives 로 변경해 줍니다. [NoDrives = 드라이브 숨기기]



03. 준비된 NoDrives 값의 데이터로 미리 계산한 값을 넣어줍니다. [10진수(Dec) 기준 48 = E + F]



04. 마찬가지의 방법으로 Dword - NoViewOnDrive 값을 생성한 후 값 데이터로 앞서 계산한 값을 넣어줍니다. [10진수(Dec) 기준 32 = F]



05. 결과를 반영하기 위해 시스템을 재시작하거나 로그오프 후 재로그인 합니다.


윈도우를 다시 시작한 후 윈도우 탐색기를 통해 내 컴퓨터를 살펴본 모습입니다. 작업대로 E: 드라이브와 F: 드라이브가 표시되지 않죠.



이 중에서 E: 드라이브의 경우 단순히 숨기기만 했기 때문에 윈도우 탐색기의 주소 표시줄에서 드라이브 경로를 직접 타이핑하여 접근이 가능합니다.



하지만 F: 드라이브의 경우 NoViewOnDrive 를 통해 탐색기를 통한 접근도 막았기 때문에 접근을 하려면 아래와 같이 거부하게 됩니다.



어떤가요? 이제 NoDrives 와 NoViewOnDrive 값의 정확한 용도를 아실 수 있겠죠? 참고로 해당 값들은 보신 것과 같이 독립적으로 움직입니다. 이는 특정 드라이브를 단순히 숨기기만 할 수도 있고, 숨기지 않고 접근의 제한만 막을 수도 있으며, 숨기고 접근의 제한을 막을 수도 있습니다. 반드시 셋트로 함께 써야한다는 건 아니죠.

또한 이렇게 탐색기에서 숨기고 접근을 막더라도 단순히 탐색기에서만 제한하는 것일 뿐 드라이브 안에 포함된 프로그램이나 파일들을 사용하는데에는 아무런 문제가 없습니다. 그래서 이러한 특성을 활용하여 대부분의 피씨방에선 D: 드라이브에 게임이나 프로그램들을 깔아두고 D: 드라이브를 숨기고 접근을 제한하는 방법을 사용하고 있습니다. 이렇게 설정해 두었다고 우리가 피씨방에서 D: 드라이브에 설치된 게임이나 프로그램을 사용하지 못하는 것은 아니잖아요? 게임 업데이트가 안 되는 것도 아니구요. 그런겁니다.

대신 숨겨두거나 접근을 제한하면 정확한 파일의 경로를 모를 경우(프로그램의 경우 바로 가기가 없거나) 사람들이 해당 드라이브의 파일(프로그램)들을 사용하는데에는 좀 애로가 있겠죠?




해당 방식의 한계

이렇게 레지스트리를 통해 특정 드라이브를 숨기거나 접근을 제한하더라도 해당 드라이브 안에 포함된 파일이나 프로그램들은 사용이 가능하죠. 이는 탐색기(또는 탐색기를 활용하는 기능 - ex 파일 선택 창) 외의 프로그램들을 통한 접근은 가능하다고 말할 수 있습니다. 그래서 토탈 커맨더류의 윈도우 탐색기와는 전혀 별개로 독립적으로 작동하는 파일 관리 프로그램을 통하면 숨겨진 드라이브도 보이고 접근을 제한한 드라이브도 아무런 문제없이 접근이 가능합니다.



근데 생각해보면 이럴 수 밖에 없는 게, 이런 것까지 막으려면 탐색기 뿐만 아니라 모든 프로그램에서 해당 드라이브가 숨겨지거나 접근을 할 수 없게 해야 하는데, 그러면 윈도우에서 해당 드라이브를 아예 쓸 수 없는 게 되버리는 거죠. 그럼 파티션의 드라이브 문자를 제거해버리는거랑 다를 게 없죠.

뭐 그렇습니다. 여기까지 하죠. ^^