다음을 통해 공유


자녀 보호 설정 API 사용

로깅은 사용자의 설정에 조건부이므로 로깅에 앞서 설정에 대해 설명합니다.

WMI API 설정 쓰기/읽기

WMI API는 Wpcsprov.mof 스키마 파일에 정의된 대로 자녀 보호 인프라에 의해 인스턴스화된 모든 설정에 대해 추상화되지 않은(원시) 액세스를 제공합니다. 설정 저장소는 \root\CIMV2\Applications\WindowsParentalControls 네임스페이스에 있으며 스키마를 정의하는 클래스 정의는 다음과 같습니다. 확장성 요소를 적어 줍니다.

컴퓨터별:

  • WpcSystemSettings(하나의 인스턴스)
    • AddUser() 및 RemoveUser() 메서드는 각각 지정된 SID에 대한 자녀 보호 설정을 만들고 삭제합니다.
    • 현재 게임 등급 시스템의 속성 및 로그 관리자 확인과 관련된 추적 및 알림입니다.
    • 확장성: 웹 콘텐츠 필터링을 위한 읽기 전용 및 읽기/쓰기 HTTP 애플리케이션 및 URL 면제 목록, 웹 콘텐츠 필터 재정의 ID 및 이름 리소스 DLL 경로 및 ID, 사용자 정의 로그 이벤트 필드 수 및 헤더 이름 등록 속성.
  • WpcRatingsSystem(설치된 각 등급 시스템당 하나의 인스턴스)
    • WpcRating(등급 수준당 하나의 인스턴스).
    • WpcRatingDescriptor(등급 설명자당 하나의 인스턴스).
  • 확장성: WpcExtension(추가된 각 자녀 보호 패널 확장성 링크당 하나의 인스턴스).
    • GUID, 하위 시스템, ID, 이미지 리소스 경로, 비활성화된 상태 이미지 리소스 경로, 실행 파일 경로, 표시 이름 리소스 DLL 경로 및 ID, 자막 리소스 DLL 경로 및 ID에 대한 속성입니다.

개별 제어된 사용자:

  • WpcUserSettings(제어된 사용자당 하나의 인스턴스)

    • SID 소유, 자녀 보호 켜기/끄기 플래그, 로그온/끄기 플래그, 시간 제한 설정/해제 플래그, 사용 플래그 재정의, 로그온 시간 마스크 및 일반 응용 프로그램 제한 설정/해제 플래그에 대한 속성입니다.

    • Windows 8에서 기존 속성은 각 시간에 대한 처음 반시간을 나타냅니다. 각 시간의 후반을 나타내기 위해 새로운 반 시간 속성이 추가되었습니다. 일일 시간 수당을 나타내는 추가 새 속성이 도입되었습니다.

      Windows 7 및 Windows Vista: 타이머 제한은 1시간 세분성을 지원합니다.

  • WpcWebSettings(제어된 사용자당 하나의 인스턴스)

    • SID 소유 속성, 필터 켜기/끄기 플래그, 필터 수준, 파일 다운로드 차단 플래그, 등급이 지정되지 않은 사이트 차단 플래그.
  • WpcUrlOverride(웹 콘텐츠 필터링에 대한 허용/차단 목록으로 사용되는 URL 재정의 목록에서 명시적으로 허용되거나 거부된 URL당 하나의 인스턴스)

    • SID를 소유하기 위한 속성, 영향을 받는 URL, 허용됨/차단된 상태입니다.
  • WpcAppOverride(일반 애플리케이션 제한 애플리케이션 재정의 목록에서 명시적으로 허용된 경로당 하나의 인스턴스)

    • SID를 소유하기 위한 속성입니다. SAFER 규칙 ID, 애플리케이션 경로입니다.
  • WpcGamesSettings(제어된 사용자당 하나의 인스턴스)

    • SID 소유 속성, 게임 허용 플래그, 이러한 설정에 대한 등급 시스템의 GUID, 평가되지 않은 게임 플래그 허용, 현재 시스템에서 허용되는 최대 등급 ID, 거부된 설명자 컬렉션.
  • WpcGameOverride(명시적으로 허용되거나 거부된 애플리케이션 ID당 하나의 인스턴스)

    • 소유 SID 속성, 게임을 식별하는 애플리케이션 ID, 허용/거부 상태.

데이터 표현 참고 사항

스키마 내의 몇 가지 설정은 특성 non_null .mof 파일에 의해 제한됩니다. null 변형으로 설정할 수 없습니다. 배열이 아닌 모든 형식에 대해 자녀 보호 코드는 값을 초기화합니다. 배열의 경우 null 변형, 빈 변형 또는 크기가 0인 variant 배열을 사용하여 빈 상태를 작성할 수 있습니다. WMI 공급자는 이러한 모든 것을 읽기 시 null 변형 상태 표현으로 정규화합니다.

WMI를 사용하여 UI 확장성 링크를 등록하려면 다음 정보를 지정해야 합니다.

  • GUID - 여러 링크가 공통 패키지 또는 제품군의 일부인 경우 동일한 GUID를 공유할 수 있습니다.
  • 하위 시스템 - 제품군 또는 독립 실행형 규격 애플리케이션과 같은 링크 형식의 분류를 나타내기 위한 것입니다.
  • 이름 리소스 DLL 경로 및 ID - 링크에 표시할 표시 이름에 대한 리소스를 지정합니다.
  • 자막 리소스 DLL 경로 및 ID - 이름 아래의 추가 텍스트에 대한 리소스를 지정합니다.
  • 이미지 경로 - 24개 × BMP(24픽셀 비트맵)의 전체 경로이며, 픽셀당 8비트 색 깊이와 알파 채널이 바람직합니다. 이는 셸 확장과 일치하는 방식으로 지정됩니다. <파일 시스템 경로>,<음수 리소스 ID\1>. 예: C:\Windows\System32\Wpccpl.dll,-20.
  • 비활성화된 이미지 경로 - 비활성 상태를 표시하는 비트맵의 변형을 제외하고 위의 이미지 경로와 동일합니다. 이 이미지는 보호자 통제가 해제된 경우에 표시됩니다.
  • Exe 경로 - ShellExecute()를 사용하여 호출할 실행 파일의 전체 경로입니다. 이 경로는 백슬래시로 지정해야 합니다. 그렇지 않으면 링크에서 실행 파일을 호출하지 않습니다. exe 경로 후에 %SID% 토큰을 추가하면 현재 허브 페이지를 보고 있는 사용자의 SID 문자열을 대체하는 링크 실행이 발생합니다. 그런 다음, 실행 파일은 SID 문자열을 사용하여 지정된 사용자의 기능을 관리할 수 있습니다.

애플리케이션 제거는 확장성 링크 등록을 제거해야 합니다.

FilterID 속성을 기존 등록된 UI 확장성 링크와 동일한 GUID로 설정하면 표시되는 링크가 다른 설정의 일반 링크에서 전용 웹 제한 링크로 승격됩니다. 이는 컴퓨터 전체 설정이므로 기본 제공 웹 콘텐츠 필터 LSP가 제어되는 모든 사용자에 대한 모든 필터링을 무시합니다. 설명이 포함된 이름은 리소스 DLL 경로 및 ID로 지정된 FilterName 속성에 설정되어야 합니다.

자녀 보호 시스템은 모든 우회 가능한 웹 필터에서 다음을 권장합니다.

  • 사용자의 전체 자녀 보호 설정의 켜기/해제 상태를 존중합니다.
  • 사용자의 활동 보고 설정을 준수합니다.
  • FilterID 속성을 모니터링합니다. 공급업체의 지정된 GUID에서 변경된 경우 다른 필터가 소유권을 가져와 공급업체의 필터 자체를 사용하지 않도록 설정해야 합니다. 이 변경 내용과 WMI 호출에 대해 주기적으로 검사하는 오버헤드를 줄이기 위해 COM 인터페이스가 추가되었습니다.
  • 읽기 전용 및 읽기/쓰기 HTTP 응용 프로그램과 URL 예외 목록 항목들을 모두 준수하는 것이 적극 권장됩니다.
  • 사용자별 URL 재정의 목록, 즉 허용/차단 목록을 준수하는 것이 좋습니다.
  • 빠른 사용자 전환에 강력합니다.

자녀 보호는 웹 또는 기타 콘텐츠 필터가 필터링을 구현하기 위해 Windows에 연결하는 방법에 제한을 두지 않습니다. 공급업체는 현재 투자 또는 선호 기술(LSP, TDI, 기타)을 활용할 수 있습니다.

공급업체 필터를 제거하려면 FilterID 및 FilterName 항목의 등록을 취소해야 합니다. 이 작업은 FilterID를 GUID_NULL FilterName을 변형 null로 설정하여 수행됩니다. 그러면 기본 제공 웹 콘텐츠 필터가 다시 사용하도록 설정됩니다.

기본 제공 웹 필터를 다시 사용하도록 설정하면 새 세션만 필터링되고 전환 전의 세션은 필터링되지 않습니다.

웹 콘텐츠 필터 허용/차단 목록 내보내기/가져오기 형식

이 기능은 Windows 8에서 지원되지 않습니다.

Windows 7 및 Windows Vista: 이 기능이 지원됩니다.

<WebAddresses>

<URL AllowBlock="1">https://alloweddomain.com/</URL>

<URL AllowBlock="1">https://allowedurl.com/allowed/default.html</URL>

<URL AllowBlock="2">https://blockeddomain.com/</URL>

<URL AllowBlock="2">https://blockedurl.com/blocked/default.html</URL>

</WebAddresses>

애플리케이션 제한 우회 참고 사항

애플리케이션 제한 재정의는 특정 이진 파일 또는 경로를 허용하도록 사용자별로 설정됩니다. 부모로 제어되는 새 사용자가 구성되고 해당 사용자에 대한 애플리케이션 제한 재정의가 필요한 경우 레지스트리의 Windows 실행 키를 재정의를 작성하기 위해 배포된 권한 상승이 필요한 것으로 표시된 작은 애플리케이션과 함께 사용하는 것이 좋습니다. 이로 인해 사용자에 대한 재정의를 구성하는 일회성 자격 증명 프롬프트가 생성되며, 그 후에는 추가 관리자 재정의 프롬프트로 인해 재정의에 대한 대상 이진 파일이 사용자에게 성가신 것이 아닙니다.

설정 변경 내용이 적용되기 위해 필요한 작업

관리자가 로그인한 표준 사용자에 대한 설정을 변경하면 경고 메시지가 생성됩니다. 제어된 사용자가 로그아웃하고 다시 로그인할 때까지 설정 변경 내용이 적용되지 않을 수 있음을 설명합니다. 이것은 보수적 인 디자인입니다. 대부분의 설정은 제어된 사용자가 로그인하는 동안 거의 즉시 적용됩니다. 한 가지 예외는 게임용으로, 다음에 게임 탐색기를 실행하거나 게임을 호출할 때 설정이 적용됩니다.

샘플 코드

C++ 샘플은 설정 확장성 기능의 사용을 보여주는 SDK에 제공됩니다. 자녀 보호 예시 섹션을 참조하세요.

독립 테스트 도구

클래스 및 인스턴스 검사는 Wmimgmt.msc 플러그 인 및 Wbemtest.exe 도구를 통해 수행됩니다.

64비트 고려 사항

64비트 Windows 운영 체제 버전에는 현재 32비트 WMI 공급자와 64비트 공급자가 모두 설치되어 있습니다.

일반 코드 개발 및 디버깅

Visual Studio를 설정 관리 코드 개발에 사용하는 경우 로컬 디버깅을 사용하려면 관리자 권한으로 Visual Studio를 실행해야 합니다(명령줄 또는 마우스 오른쪽 단추 클릭 옵션을 사용하여 관리자 권한으로 실행). 이는 UAC에서 구현한 프로세스 및 메시지 격리 때문입니다.

최소 준수 API 설정을 읽기

인터페이스 및 메서드

헤더 파일 Wpcapi.h로 제어되는 준수 API는 COM 인터페이스를 사용하여 다음 설정에 대한 간단한 읽기 전용 액세스를 제공합니다.

IWindowsParentalControls 루트 인터페이스 메서드는 다음 액세스 권한을 제공합니다.

  • IWPCSettings 메서드:
    • IsLoggingRequired()—사용자에 대해 활동 보고가 설정되어 있나요?
    • GetLastSettingsChangeTime()- 이전 검사 이후 설정 정책이 변경되었는지 애플리케이션에서 알 수 있습니다.
    • GetRestrictions()- 웹 제한, 시간 제한, 게임 제한 또는 응용 프로그램 제한 설정 여부를 읽습니다.
  • IWPCWebSettings 메서드:
    • GetSettings()– 필터 켜기 또는 끄기 플래그를 검색하고 다운로드가 차단됩니다.
    • RequestURLOverride()—승인할 URL이 포함된 대화 상자를 표시하는 관리자 조정(관리자의 직접 승인을 포함하는) 메커니즘에 요청을 입력합니다.
  • IWPCGamesSettings 메서드:
    • 지정된 게임 응용 프로그램 ID에 대해, 자녀 보호 설정에 의해 게임이 차단되었는지 여부와 그 이유를 확인하는 함수 IsBlocked().
  • GetVisibility()- 자녀 보호 UI가 현재 숨겨져 있는지 여부에 대한 정보를 제공합니다.
  • GetWebFilterInfo()- 현재 활성 웹 콘텐츠 필터의 ID를 가져오기 위한 인터페이스를 제공합니다.

샘플 코드

C++ 샘플은 준수 API 사용을 보여주는 SDK에 제공됩니다. 자녀 보호 샘플 섹션을 참조하십시오.