본문 바로가기

IT/UTIL

Vista Util 2007 06

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 마찬가지로 도구를 사용하는 따른 "모든 위험은 사용자 책임"이며 별도의 지원이 제공되지 않습니다. 많은 도움이 되기를 바랍니다.

추가 리소스

   

   


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.


  Top of page


© 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:

   

원본 위치 <https://www.e-typedesign.co.uk/technet/technetmag/issues/2007/06/UtilitySpotlight/default.aspx?loc=ko>