Download the code for this article: Utility2007_06.exe (159KB)
Windows Vista에서는 보안 문제의 해결을 위해 많은 기능이 도입되었지만 UAC(사용자 계정 컨트롤)는 그 중 중요한 기능이라고 할 수 있습니다. 사용자 계정 컨트롤을 사용하면 관리자 권한을 가진 사용자가 대부분의 응용 프로그램을 표준 권한으로 실행하고 특정 관리 작업과 응용 프로그램 기능은
상승된 권한으로 실행할 수 있습니다. Windows Vista™를 여러 달 사용하다 보면 필요에 따라 작업이나 응용 프로그램의 권한을 상승해야 하는 경우가 많습니다. 하지만 필자는 Windows Vista에서 몇몇 유형의 작업에서 권한을 상승하려고 할 때 몇 가지 어려움을 발견하고 불편함을 느끼게 되었습니다.
그래서 필자는 Windows® PowerToys의 정신에 따라 이러한 한계를 극복할 수 있는 스크립트 권한 상승 PowerToys 몇 가지를 직접 개발했습니다. 여기서 소개하는 모든 PowerToys는 technetmagazine .com/code07.aspx의 코드 다운로드 섹션에서 다운로드할 수 있습니다. 또한 UAC의 작동 방식에 대한 자세한 설명은 2006년 11월호에 Alex Heaton가 기고한 기사인 "사용자 계정 컨트롤을 사용하여 관리자가 아닌 사용자로 실행"에서 볼 수 있습니다("추가 리소스" 참조).
권한 상승 명령 PowerToy
첫 번째 불편한 점은 명령줄이나 실행 대화 상자에서 응용 프로그램의 권한을 상승할 방법이 없다는 점이었습니다. 따라서 필자는 Microsoft 내 여기저기에서 문의한 끝에 결국 John Stephens(Microsoft의 소프트웨어 설계 엔지니어)의 샘플 스크립트에서 필요한 정보를 얻을 수 있었습니다. "runas"라는 명령을 ShellExecute API 또는 COM에서 이에 해당하는 메서드인 Shell.Application의 ShellExecute 메서드에 전달하면 응용 프로그램 실행 시 권한 상승을 확인하는 메시지가 표시되는 것을 알게 되었습니다(자세한 내용은 추가 기사 참조). 이를 통해 첫 번째 권한 상승 PowerToy인 권한 상승 명령 PowerToy를 만들 수 있었습니다.
ElevateCommand.inf, elevate.cmd 및 elevate.vbs 파일로 구성된 이 도구는 시스템에 권한 상승 명령을 추가하므로 이를 통해 명령줄, 스크립트 또는 실행 대화 상자에서 권한 상승을 확인하는 응용 프로그램을 시작할 수 있습니다. 예를 들어 다음 명령은 메모장에서 Win.ini를 엽니다(권한 상승 확인 메시지 표시 후).
elevate notepad c:\Windows\Win.ini
Windows Script Host(WSH), Windows PowerShell™ 또는 다른 스크립트에서 권한 상승 명령을 사용할 때는 스크립트 호스트 실행 파일(예: wscript, cscript 또는 powershell)을 응용 프로그램으로 지정해야 합니다. 예를 들어 vbs를 실행하려면 다음과 같이 지정합니다.
elevate wscript "C:\windows\system32\
slmgr.vbs" –dli
도움말 텍스트에 이에 대한 설명이 있습니다. 도움말 텍스트를 보려면 elevate에 -?를 지정하거나 매개 변수 없이 사용하십시오.
관리자로 스크립트 실행
두 번째 불편한 점은 대부분의 Windows 스크립트에, 탐색기에서 파일을 마우스 오른쪽 단추로 클릭했을 때 나타나는 "관리자 권한으로 실행" 상황에 맞는 메뉴 옵션이 없다는 점입니다. 한 가지 예외는 파일 확장명이 .bat 및 .cmd인 명령-셸 스크립트입니다. 따라서 필자는 이에 대해 조사했습니다. 파일 형식에 따른 상황에 맞는 메뉴 중 많은 수는 레지스트리지에서 HKEY_CLASSES_ROOT 섹션의 "개체" 유형에 대한 명령 키를 통해 제어됩니다. 자세한 내용은 "동사와 파일 연결" 추가 기사를 참조하십시오. 조사 결과 명령 키 이름이 runas이면 호출된 명령이 권한 상승을 확인한다는 것을 알게 되었습니다. 따라서 다음 PowerToys를 만들 수 있었습니다.
- HTML 응용 프로그램 권한 상승 PowerToy(ElevateHTA.inf)
- Windows PowerShell 스크립트 권한 상승 PowerToy(ElevatePowerShellScript.inf)
- WSH 스크립트 권한 상승 PowerToy(ElevateWSHScript.inf, elevate.cmd, elevate.vbs)
이 PowerToys는 그림 1에서 볼 수 있는 것처럼 HTA, Windows PowerShell 및 Windows Script Host 파일 형식에 "관리자 권한으로 실행" 탐색기 상황에 맞는 메뉴 항목을 추가합니다. 또한 ElevateWSHScript.inf는 명령 프롬프트 메뉴 항목에 관리자 권한으로 실행 메뉴를 추가합니다. 설치하기 전에 ElevatePowerShellScript.inf의 참고 설명을 읽어 보시기 바랍니다.
그림 1 관리자 권한으로 실행 상황에 맞는 메뉴 옵션 (Click the image for a larger view)
다른 파일 형식의 권한 상승
runas 명령 기법은 모든 파일 형식에 적용될 수 있습니다. 예를 들어 Windows Vista의 Windows Installer는 패키지 설치 시 권한 상승이 필요한 경우 적절하게 동작하도록 설계되었습니다. 하지만 사용자 지정 작업이 적절하게 표시되지 않은 패키지처럼 일부 부적합하게 작성된 패키지의 경우 UAC가 설정된 상태로 올바르게 설치하려면 권한 상승된 명령 프롬프트에서 msiexec.exe를 사용하여 설치해야 합니다.
이 작업을 탐색기에서 바로 수행할 수 있도록 하기 위해 필자는 ElevateMSI.inf를 만들었습니다. 이 도구는 Windows Installer 패키지(.msi)와 패치(.msp)의 기본 동작을 복제하여 패키지에는 Install as Administrator(관리자 권한으로 실행) 상황에 맞는 메뉴 옵션을, 패치에는 Apply Patch as Administrator(관리자 권한으로 패치 적용) 메뉴 옵션을 추가합니다.
관리자로 CMD 및 PowerShell 프롬프트 표시
가장 인기 있는 Windows PowerToys 중 하나는 명령(또는 CMD) 프롬프트 표시 PowerToy입니다. 이 PowerToy를 설치하면 Windows 탐색기에서 폴더나 드라이브를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 CMD Prompt Here(CMD 프롬프트 표시)를 선택할 수 있습니다. 그러면 선택된 폴더를 현재 디렉터리로 하여 명령 프롬프트가 열립니다.
매우 편리한 기능이어서 필자는 이 PowerToy를 하루에도 몇 번씩 사용합니다. Windows PowerShell을 배우고 사용할 때도 이 기능을 사용할 수 있으면 좋겠다는 생각을 했습니다. 그래서 PowerShell 프롬프트 표시 PowerToy를 만들었습니다("새로 수정된 기존의 PowerToy" 추가 기사 참조).
하지만 이것만으로는 충분하지 않았습니다. 상승된 권한으로 셸 프롬프트를 열면 편리한 경우가 많기 때문입니다. 그렇게 해서 "관리자로 CMD 프롬프트 표시"(CmdHereAsAdmin.inf)와 "관리자로 PowerShell 프롬프트 표시"(PowerShellHereAsAdmin.inf, elevate.cmd, elevate .vbs) PowerToys를 만들었습니다(그림 2 참조). 두 PowerToys는 권한 상승 기능이 없는 기존 PowerToys(사용자 편의를 위해 코드 다운로드에 포함)와 같은 방식으로 작동합니다.
그림 2 상승된 권한으로 프롬프트 표시 (Click the image for a larger view)
설치 및 구현
이 PowerToys를 설치하려면 INF 파일을 마우스 오른쪽 단추로 클릭하고 설치를 선택한 다음 권한 상승을 승인합니다. 제거할 때는 제어판의 프로그램 및 기능을 사용합니다.
INF 파일을 분석하다 보면 이 PowerToys가 왜 elevate.cmd와 elevate.vbs를 서로 다른 위치에 설치하는지 궁금할 것입니다. 이에 대해 설명하겠습니다. 대부분의 PowerToys는 레지스트리에서 HKEY_CLASSES_ROOT\objecttype\Shell 키에 개체 유형에 대해 runas 하위 키를 추가하는 방법으로 구현됩니다.
하지만 일부 PowerToys의 경우에는 권한 상승을 위한 상황에 맞는 메뉴 항목이 두 개 있는 것이 좋은 개체 유형이 있습니다. 예를 들어 드라이브 및 디렉터리 개체 유형의 경우에는 "CMD Prompt Here as Administrator(관리자로 CMD 프롬프트 표시)"와 "PowerShell Prompt Here as Administrator(관리자로 PowerShell 프롬프트 표시)", 모든 WSH 개체 유형의 경우에는 "관리자로 실행"과 "Run as Administrator with Command Prompt(명령 프롬프트를 사용하여 관리자로 실행)"이 있는 것이 좋습니다. 하나의 개체 유형에는 하나의 runas 키만 있을 수 있으므로 elevate 명령을 호출하여 두 번째 작업을 구현해야 했습니다. 하지만 각 INF를 개별적으로 설치 및 제거할 수 있도록 하기 위해 필자는 연관된 elevate.cmd 및 elevate.vbs를 서로 다른 위치에 두어야 했습니다. 원시 INF 파일에서 파일 사용 카운터를 증가시킬 수 없습니다. 물론 MSI 설치 관리자가 더 좋을 수 있지만 필자는 텍스트 편집기로 만들고 수정할 수 있는 설치 관리자를 원했습니다. 이 방법의 한 가지 단점은 runas 키를 사용하여 구현된 상황에 맞는 메뉴 항목만 메뉴에서 방패 모양이 표시된다는 점입니다.
요약
이 도구가 유용하게 사용되고 이를 통해 UAC를 좀 더 편리하게 사용할 수 있기를 바랍니다. 이 도구를 사용하다 보면 PowerToys를 직접 만들어 보고 싶은 마음이 생길 것입니다. Windows Vista에서 Perl이나 Python 같은 스크립팅 언어를 사용하는 사용자는 해당 언어를 위한 "권한 상승 스크립트" PowerToy를 쉽게 만들 수 있을 것입니다. 모든 PowerToys와 마찬가지로 이 도구를 사용하는 데 따른 "모든 위험은 사용자 책임"이며 별도의 지원이 제공되지 않습니다. 많은 도움이 되기를 바랍니다.
추가 리소스
- 사용자 계정 컨트롤을 사용하여 관리자가 아닌 사용자로 실행
- 사용자 계정 컨트롤 개요
- ShellExecute를 통한 권한 상승
- ShellExecute 메서드
- 동사와 파일 연결
- 새로 수정된 기존의 PowerToy
Michael Murgolo는 Microsoft Consulting Services의 수석 인프라 컨설턴트로서, 운영 체제, 배포, 네트워크 서비스, Active Directory, 시스템 관리, 자동화 및 패치 관리를 담당하고 있습니다. Michael Murgolo는 데스크톱 배포와 마이그레이션 분야의 전문가입니다.
From the June 2007 issue of TechNet Magazine.
We welcome your comments. Please feel free to send us feedback.
© 2006 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.
Related Articles From TechNet Magazine:
- Utility Spotlight: SMSMap by Jeff Tondt (07/2007)
- Utility Spotlight: Internet Explorer Administration Kit by Lance Whitney (01/2007)
- Utility Spotlight: Upgrade Toolkit for SharePoint Sites and Templates by Luis Câmara Manoel and Peter Skjøtt Larsen (05/2007)
- System Management: Gathering WMI Data without Writing a Single Line of Code by John Kelbley (09/2006)
- Utility Spotlight: The Shared Computer Toolkit by Jeremy Moskowitz (07/2006)
원본 위치 <https://www.e-typedesign.co.uk/technet/technetmag/issues/2007/06/UtilitySpotlight/default.aspx?loc=ko>
'IT > UTIL' 카테고리의 다른 글
VMware 제품 목록 (0) | 2009.01.29 |
---|---|
RTC Client API's and Windows Vista (0) | 2007.12.10 |
DSGraphEdit: A Reasonable Facsimile of Microsoft's GraphEdit in .NET (0) | 2007.12.05 |
windows 2003 server 에서 photoshop cs3 설치방법 (0) | 2007.11.28 |
UltraVNC NAT2NAT connections (0) | 2007.11.09 |