CPP > Win32 > Internet 신뢰 사이트

Redjini WiKi
< cpp‎ | win32

인터넷 옵션 > 보안 > 신뢰할 수 있는 사이트에 사이트 등록하기

소스

BOOL Util::SetTrustZone(CComBSTR lpszDomain){     
	CComPtr<IInternetSecurityManager>	pSM;
	CComPtr<IInternetZoneManager>		pZM; 

	DWORD	dwEnum		= 0;
	DWORD	dwZoneCount	= 0;
	DWORD	dwZone		= 0;
	BOOL    bResult		= FALSE;

	ZONEATTRIBUTES	zone;

	memset(&zone, 0, sizeof(ZONEATTRIBUTES));

	// InternetSecurityManager 인터페이스 
	if( CoCreateInstance(CLSID_InternetSecurityManager	, NULL, CLSCTX_ALL, IID_IInternetSecurityManager, (void**)&pSM) != S_OK){
		return FALSE;
	} 

	// InternetZoneManager 인터페이스 
	if( CoCreateInstance(CLSID_InternetZoneManager		, NULL, CLSCTX_ALL, IID_IInternetZoneManager	, (void**)&pZM) != S_OK){
		return FALSE;
	}

	// Zone Enumerator 초기화
	pZM->CreateZoneEnumerator	(&dwEnum, &dwZoneCount, 0);


	// URLZONE_LOCAL_MACHINE	= 0, my computer 영역
	// URLZONE_INTRANET			= 1, local intranet(로컬 인트라넷) 영역
	// URLZONE_TRUSTED			= 2, trusted sites(신뢰할 수 잇는 사이트) 영역
	// URLZONE_INTERNET			= 3, internet(인터넷) 영역
	// URLZONE_UNTRUSTED		= 4, restricted sites (제한된 사이트) 영역
	pZM->GetZoneAt				(dwEnum, URLZONE_TRUSTED, &dwZone);
	pZM->GetZoneAttributes		(dwZone, &zone);

	//기본 HTTPS만 등록해야하는 제약조건 삭제
	if(zone.dwFlags & ZAFLAGS_REQUIRE_VERIFICATION){
		zone.dwFlags &=~ZAFLAGS_REQUIRE_VERIFICATION;
	}

	pZM->SetZoneAttributes(dwZone, &zone);

	//도메인 등록
	if(pSM->SetZoneMapping(URLZONE_TRUSTED, lpszDomain, SZM_CREATE) == S_OK){
		bResult = TRUE;
	}else{
		bResult = FALSE;
	}

	if(dwEnum != 0){
		pZM->DestroyZoneEnumerator(dwEnum);
	}
}