프로그래밍/델파이

신뢰할 수 있는 사이트에 등록하기

채윤아빠 2009. 1. 8. 13:39
728x90
반응형

다음 함수를 이용하여 신뢰할 수 있는 사이트에 원하는 사이트를 등록할 수 있습니다.

{** IE 설정의 보안탭의 신뢰할 수 있는 사이트에 입력한 사이트를 추가합니다.
  @param strSite 신뢰할 수 있는 사이트에 추가할 사이트
  @result 신뢰할 수 있는 사이트에 추가가 성공하면 true를 반환, 오류시 false를 반환합니다.
  *}
function SetReliableSite(const strSite:string;dwFlags:Cardinal=SZM_CREATE):boolean;
var
  AResult:HRESULT;
  AInternetZoneManager:IInternetZoneManager;
  AInternetSecurityManager:IInternetSecurityManager;
  dwEnum,dwCount,dwZone:DWORD;
  AZoneAttributes:ZONEATTRIBUTES;
begin
  Result:=false;

  if (Trim(strSite)='') then
    Exit;

  // 객체 생성
  AResult:=CoCreateInstance(CLSID_InternetZoneManager,
                          nil,
                          CLSCTX_ALL,
                          IID_IInternetZoneManager,
                          AInternetZoneManager);
  if (Failed(AResult)) then
    Exit;

  AResult:=CoCreateInstance(CLSID_InternetSecurityManager,
                          nil,
                          CLSCTX_ALL,
                          IID_IInternetSecurityManager,
                          AInternetSecurityManager);
  if (Failed(AResult)) then
    Exit;

  // Creates a zone enumerator
  AInternetZoneManager.CreateZoneEnumerator(dwEnum,dwCount,0);

  // Retrieves the zone associated with the specified index on the given enumerator
  AInternetZoneManager.GetZoneAt(dwEnum,URLZONE_TRUSTED,dwZone);

  // 신뢰할 수 있는 사이트는 기본적으로 https를 요구하기 때문에 이 속성을 제거
  AInternetZoneManager.GetZoneAttributes(dwZone,AZoneAttributes);
  if ( (AZoneAttributes.dwFlags and ZAFLAGS_REQUIRE_VERIFICATION)>0 ) then
      AZoneAttributes.dwFlags:=AZoneAttributes.dwFlags and not ZAFLAGS_REQUIRE_VERIFICATION;
  AInternetZoneManager.SetZoneAttributes(dwZone,AZoneAttributes);

  // 해당 도메인 등록
  AResult:=AInternetSecurityManager.SetZoneMapping(dwZone,StringToOleStr(strSite),dwFlags);
  if (Failed(AResult)) then
  begin
    if (dwEnum<>0) then
      AInternetZoneManager.DestroyZoneEnumerator(dwEnum);
    Exit;
  end;
  if (dwEnum<>0) then
    AInternetZoneManager.DestroyZoneEnumerator(dwEnum);

  Result:=true;
end;