권한 있는 작업 실행
권한 있는 작업에는 장치 드라이버를 로드하는 계정에 대해 사용하도록 설정해야 하는 권한인 SeLoadDriverPrivilege(스크립팅 API 상수의 wbemPrivilegeLoadDriver)와 같은 보안 권한이 필요합니다. WMI를 통해 관리자 또는 사용자에게 권한을 추가할 수 없으며 계정에 이미 있는 권한만 사용하도록 설정할 수 있습니다. 권한 목록에 대해서는 Privilege_Constants를 참조하세요.
기본적으로 컴퓨터의 로컬 사용자는 WMI 리포지토리에서 정적 데이터를 읽고 공급자가 제공하는 인스턴스에 쓰고 공급자가 자체적으로 특별한 보안 요구 사항을 적용하지 않는 한 공급자 메서드를 실행할 수 있습니다. 관리자만 원격 컴퓨터에 연결하거나 보안 설명자를 변경하거나 WMI 클래스 정의와 같은 정적 WMI 리포지토리 데이터를 변경할 수 있습니다. 모든 권한은 원격 연결에 대해 사용하도록 설정됩니다. 자세한 내용은 원격 WMI 연결 보안을 참조하세요.
C++에 대한 권한 상수는 Visual Basic과 같은 자동화 언어에서 사용되는 상수와 다릅니다. 스크립트는 이름 대신 상수 값을 사용해야 합니다. 자세한 내용은 C++를 사용하여 권한 있는 작업 실행 또는 VBScript를 사용하여 권한 있는 작업 실행을 참조하세요.
WMI를 사용할 때 액세스 거부 오류의 일반적인 원인은 모든 Win32_NTEventlogFile 인스턴스 가져오기와 같은 작업에 대해 활성화된 권한이 없기 때문에 발생합니다. SeSecurity 권한을 사용하도록 설정하지 않으면 보안 로그 파일에 액세스할 수 없습니다.
다음 VBScript 코드 예제에서는 모니커 문자열에서 SeSecurity 권한을 설정하는 방법을 보여줍니다. 모니커에서 사용할 경우 괄호 안의 권한 이름은 이니셜 "Se"를 삭제합니다. 자세한 내용은 모니커 문자열 만들기를 참조하세요.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Security)}!\\" _
& strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile " _
& "Where LogFileName='Security'")
For Each LogFile in colFiles
Wscript.Echo LogFile.NumberOfRecords
Next
관련 항목