윈도우의 파일 탐색기는 항상 최소 권한(least privilege)으로 시작됩니다. 실행 파일 C:\Windows\explorer.exe를 마우스 오른쪽 버튼으로 클릭해 "관리자 권한으로 실행"을 선택해도 권한 상승은 이루어지지 않습니다. 이 글에서는 파일 탐색기를 상승된 권한(관리자 권한)으로 실행하는 간단한 방법을 소개합니다.
"폴더 액세스 권한이 없습니다, 계속을 클릭하면 영구적으로 액세스 권한을 얻습니다" 메시지란?
로컬 관리자 그룹에 속한 계정(또는 기본 제공 Administrator 계정)으로 작업할 때, 시스템 폴더나 사용자 프로필, 보호된 시스템 파일을 열거나 수정해야 하는 경우가 자주 있습니다. 현재 컨텍스트에서 파일 탐색기로 해당 폴더나 파일을 열려고 하면 UAC 경고가 나타나며 액세스 권한 부여와 권한 상승을 요청합니다.
예를 들어 파일 탐색기에서 시스템 폴더인 C:\Windows\System32\Config를 열어보겠습니다. 그러면 사용자 계정 컨트롤(UAC) 창이 나타나며 현재 이 폴더에 대한 액세스 권한이 없다고 경고합니다:
현재 이 폴더에 액세스할 수 있는 권한이 없습니다. 계속을 클릭하면 이 폴더에 영구적으로 액세스할 수 있습니다.
계속 버튼을 클릭하면 UAC 권한 상승을 통해 폴더에 접근할 수 있습니다.
계속을 클릭하면 UAC가 explorer.exe 프로세스의 권한을 일시적으로 상승시키고, 해당 계정에 NTFS 모든 권한(Full Control)을 부여합니다.
알려진 문제점:
일단 동작은 하지만, 이렇게 하면 해당 계정이 폴더의 NTFS 권한 목록에 명시적으로 추가됩니다. 그런데 원래 의도는 단순히 폴더 내용을 확인하는 것이지 ACL(액세스 제어 목록)을 변경하는 것이 아닙니다! 서버에 여러 명의 관리자가 있다면 어떻게 될까요? 각 관리자가 폴더에 접근할 때마다 디렉터리 ACL이 변경됩니다.
권한이 한 번 변경되면 해당 사용자 계정으로 실행되는 모든 프로그램이 이 폴더에 대한 모든 권한을 갖게 되며(프로그램이 상승되지 않았더라도), 심지어 계정이 로컬 Administrators 그룹에서 제거된 후에도 마찬가지입니다.
파일 탐색기의 이러한 동작은 윈도우 서버에서 공유 네트워크 폴더를 관리할 때 문제를 일으킵니다. 이를 우회하기 위해 많은 윈도우 관리자들은 공유 폴더를 로컬 경로가 아닌 UNC 경로(\\mun-fs01\docs\)를 통해 관리하는 것을 선호합니다. 이 경우 디렉터리에 접근할 때 권한 상승이 필요하지 않으므로 NTFS ACL 변경도 발생하지 않습니다.
당연히 시스템 파일이나 사용자 폴더를 자주 다루다 보면 이러한 UAC 팝업 알림이 번거롭게 느껴집니다. UAC를 비활성화하고 싶지 않다면, 탐색기(explorer.exe)를 상승된 권한으로 실행하는 방법을 알아두는 것이 좋습니다.
Windows 10 및 Windows Server에서 파일 탐색기를 관리자 권한으로 실행하는 방법
윈도우 탐색기 프로세스는 사용자가 로그온할 때 표준 사용자 액세스 토큰으로 시작됩니다. 일반적인 방법으로는 Explorer.exe 프로세스를 상승시킬 수 없습니다. 또한 "관리자 권한으로 실행" 모드로 두 번째 탐색기 프로세스를 시작하는 것도 불가능합니다(CreateExplorerShellUnelevatedTask 작업에 의해 차단됨). 윈도우 파일 탐색기는 대화형 사용자 세션에서 서로 다른 보안 컨텍스트로 explorer.exe 프로세스의 여러 인스턴스를 실행하는 것을 지원하지 않습니다. 따라서 먼저 현재 사용자 세션의 explorer.exe 프로세스를 종료해야 합니다.
작업 관리자에서 explorer.exe 프로세스를 종료하거나, PowerShell 콘솔에서 다음 명령을 사용할 수 있습니다(반드시 powershell.exe를 관리자 권한으로 실행하세요):
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
SUCCESS: The process "explorer.exe" with PID 3208 has been terminated. (성공: PID 3208인 "explorer.exe" 프로세스가 종료되었습니다.)
explorer.exe 프로세스를 관리자 권한으로 실행하려면 다음 명령을 사용합니다:
c:\windows\explorer.exe /nouaccheck
(NO|UAC|CHECK)
이 명령들은 현재 사용자의 explorer.exe 프로세스를 종료하고 새로운 프로세스를 시작하며, 새 프로세스는 powershell.exe가 실행 중인 상승된 액세스 토큰을 상속받습니다.
또는 작업 관리자에서 새로운 상승된 탐색기 프로세스를 시작할 수도 있습니다. 작업 관리자 → 파일 → 새 작업 실행 순서로 이동한 뒤 explorer.exe /nouaccheck를 입력하고, "관리자 권한으로 이 작업 만들기" 옵션을 반드시 체크하세요.
작업 관리자에서 윈도우 탐색기가 현재 상승된 권한으로 실행 중인지 확인할 수 있습니다. 작업 관리자를 열고 세부 정보(Details) 탭으로 이동합니다. 아무 열 이름이나 마우스 오른쪽 버튼으로 클릭하고 열 선택(Select columns)을 클릭한 후 권한 승격(Elevated) 열이 표시되도록 활성화합니다.
확인해 보면 explorer.exe가 이제 Elevated=예(Yes) 속성을 갖는 것을 볼 수 있습니다.
이후 탐색기는 UAC 경고 없이 모든 시스템 폴더를 열 수 있으며, 윈도우 탐색기에서 실행되는 모든 자식 프로세스도 상승된 권한으로 실행됩니다.
예를 들어 hosts 파일(c:\windows\system32\drivers\etc)을 편집해야 할 때 특히 유용합니다. 별도의 notepad.exe 프로세스를 관리자 권한이나 다른 사용자로 시작할 필요 없이 탐색기에서 바로 메모장으로 열어 편집할 수 있습니다.
탐색기를 상승된 모드로 자주 실행해야 한다면, 위의 명령들을 담은 *.bat 또는 *.ps1 파일을 바탕 화면에 만들어 두면 편리합니다.
작업이 끝나면 반드시 탐색기를 비상승(non-elevated) 모드로 다시 시작하세요:
taskkill /f /FI "USERNAME eq $env:UserName"/im explorer.exe
explorer.exe
확인해 보면 이제 explorer.exe 프로세스의 Elevated 값이 아니요(No)로 변경된 것을 볼 수 있습니다.
이 윈도우 탐색기 권한 상승 방법은 Windows Server 2016/2019와 모든 Windows 10 빌드에서 정상적으로 작동합니다.
Windows Server 2012/R2 및 Windows 8에서는 탐색기 프로세스를 상승시키기 위해 관리자 권한으로 cmd.exe를 연 후 다음 명령을 실행해야 합니다:
tskill explorer & explorer