How to Add URL to Trusted Zone in IE

You can do this using the registry. You need to first add your URL to the registry of IE then the IE browser will read the data from the registry.

In the registry there will be two locations. If you need to add a domain name like: http://www.c-sharpcorner.com/ then you need to store this value in this location:

"Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains"

If you need to store an IP address in the IE registry then you to store the key and value in this location:

"Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges"

Now we will create a sample code for saving in the registry.

Step 1

To create the form write the code like this:

  1. Public Class WebForm1  
  2.     Inherits System.Web.UI.Page  
  3.   
  4.     Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load  
  5.   
  6.   
  7.         Try  
  8.             AddVenture21UrlToTrustedSitesForIE("http://sdw2078:30/")  
  9.             AddVenture21UrlToTrustedSitesForIE("http://10.10.223.27:49181/")  
  10.             ApiHostConfigurator.ConfigurApiHost()  
  11.         Catch ex As Exception  
  12.             'code for exception logger.  
  13.         End Try  
  14.   
  15.     End Sub  
  16.   
  17.   
  18.     ''' <summary>  
  19.     ''' This is used to validated the input and pass the data for saving in registry.  
  20.     ''' </summary>  
  21.     ''' <param name="url">String</param>  
  22.     ''' <remarks></remarks>  
  23.     Private Sub AddVenture21UrlToTrustedSitesForIE(url As String)  
  24.         Dim input As String = String.Empty  
  25.         Dim ur As New Uri(url)  
  26.         Dim browser As String = TrustedSiteRegistry.GetDefaultBrowser()  
  27.         Try  
  28.             If (browser = "Internet Explorer"Then  
  29.                 input = ur.Host  
  30.                 If ur.HostNameType = UriHostNameType.IPv4 Then  
  31.                     TrustedSiteRegistry.AddIpAddress(input)  
  32.                 ElseIf ur.HostNameType = UriHostNameType.Dns Then  
  33.                     TrustedSiteRegistry.SaveToTrustedSite(input)  
  34.                 End If  
  35.             End If  
  36.         Catch ex As Exception  
  37.             'code for exception logger.  
  38.         End Try  
  39.     End Sub  
  40.   
  41. End Class  

Step 2

Now create the TrustedSiteRegistry class and write the method for saving it in the Trusted Zone like this:

  1. Imports Microsoft.Win32  
  2. Imports System.Runtime.CompilerServices  
  3.   
  4. ''' <summary>  
  5. ''' This class hold the function and method related with saving Trusted Site in Registry.  
  6. ''' </summary>  
  7. ''' <remarks></remarks>  
  8. Public Class TrustedSiteRegistry  
  9.  
  10. #Region "Constants for Trusted sites"  
  11.     Const DomainsKeyLocation As String = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains"  
  12.     Const RANGES_KEY As String = "Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Ranges"  
  13.     Const TRUSTED_SITE_CODE As Integer = &H2  
  14.     Const ALL_PROTOCOL As String = "http"  
  15.     Const RANGE_ADDRESS As String = ":Range"  
  16.  
  17. #End Region  
  18.   
  19.     ''' <summary>  
  20.     ''' Returns the default Browser name.  
  21.     ''' </summary>  
  22.     ''' <returns></returns>  
  23.     ''' <remarks></remarks>  
  24.     Public Shared Function GetDefaultBrowser() As String  
  25.         Dim returnValue As String = String.Empty  
  26.   
  27.         Using baseKey As RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Clients\StartmenuInternet")  
  28.             Dim baseName As String = baseKey.GetValue("").ToString  
  29.             Const software As String = "SOFTWARE\"  
  30.             Const path As String = "Clients\StartMenuInternet\"  
  31.             'key value for the default browser  
  32.             Dim subKey As String = String.Format("{0}{1}{2}{3}", software, IIf(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") = "AMD64""Wow6432Node\", ""), path, baseName)  
  33.             'Default browser name  
  34.             Using browserKey As RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey(subKey)  
  35.                 returnValue = browserKey.GetValue("").ToString  
  36.             End Using  
  37.         End Using  
  38.         Return returnValue  
  39.     End Function  
  40.   
  41.     ''' <summary>  
  42.     ''' This method is used save data as Trusted Site in IE.  
  43.     ''' </summary>  
  44.     ''' <param name="domain">String</param>  
  45.     ''' <remarks></remarks>  
  46.     Public Shared Sub SaveToTrustedSite(domain As String)  
  47.         Dim subdomains As Dictionary(Of StringString) = New Dictionary(Of StringString)() From { _  
  48.                    {String.Empty, "http"} _  
  49.                                                                                                    }  
  50.         Using currentUserKey As RegistryKey = Registry.CurrentUser  
  51.             currentUserKey.GetOrCreateSubKey(DomainsKeyLocation, domain)  
  52.             For Each subdomain As Object In subdomains  
  53.                 CreateSubdomainKeyAndValue(currentUserKey, DomainsKeyLocation, domain, CType(subdomain, Global.System.Collections.Generic.KeyValuePair(Of StringString)), TRUSTED_SITE_CODE)  
  54.             Next  
  55.         End Using  
  56.     End Sub  
  57.   
  58.   
  59.   
  60.   
  61.   
  62.   
  63.     ''' <summary>  
  64.     ''' This method is used to add the IP address.  
  65.     ''' </summary>  
  66.     ''' <param name="ipAddress">String</param>  
  67.     ''' <remarks></remarks>  
  68.     Public Shared Sub AddIpAddress(ipAddress As String)  
  69.         Dim rangeKey As RegistryKey = GetRangeKey(ipAddress)  
  70.         rangeKey.SetValue(ALL_PROTOCOL, TRUSTED_SITE_CODE, RegistryValueKind.DWord)  
  71.         rangeKey.SetValue(RANGE_ADDRESS, ipAddress, RegistryValueKind.[String])  
  72.     End Sub  
  73.   
  74.   
  75.   
  76.     ''' <summary>  
  77.     ''' This method is used to Get the Range key.  
  78.     ''' </summary>  
  79.     ''' <param name="ipAddress">String</param>  
  80.     ''' <returns></returns>  
  81.     ''' <remarks></remarks>  
  82.     Private Shared Function GetRangeKey(ipAddress As StringAs RegistryKey  
  83.         Using currentUserKey As RegistryKey = Registry.CurrentUser  
  84.             For i As Integer = 1 To Integer.MaxValue - 1  
  85.                 Dim rangeKey As RegistryKey = currentUserKey.GetOrCreateSubKey(RANGES_KEY, "Range" + i.ToString())  
  86.   
  87.                 Dim addressValue As Object = rangeKey.GetValue(RANGE_ADDRESS)  
  88.                 If addressValue Is Nothing Then  
  89.                     Return rangeKey  
  90.                 Else  
  91.                     If Convert.ToString(addressValue) = ipAddress Then  
  92.                         Return rangeKey  
  93.                     End If  
  94.                 End If  
  95.             Next  
  96.             Throw New Exception("No range slot can be used.")  
  97.         End Using  
  98.     End Function  
  99.     ''' <summary>  
  100.     ''' This method is used to Create Subdomain Key And Value.  
  101.     ''' </summary>  
  102.     ''' <param name="domainsKeyLocation">String</param>  
  103.     ''' <param name="domain">String</param>  
  104.     ''' <param name="subdomain">KeyValuePair</param>  
  105.     ''' <param name="zone">Integer</param>  
  106.     ''' <remarks></remarks>  
  107.     Private Shared Sub CreateSubdomainKeyAndValue(currentUserKey As RegistryKey, domainsKeyLocation As String, domain As String, subdomain As KeyValuePair(Of StringString), zone As Integer)  
  108.         Using subdomainRegistryKey As RegistryKey = currentUserKey.GetOrCreateSubKey(String.Format("{0}\{1}", domainsKeyLocation, domain), subdomain.Key)  
  109.             Dim objSubDomainValue As Object = subdomainRegistryKey.GetValue(subdomain.Value)  
  110.             If objSubDomainValue Is Nothing OrElse Convert.ToInt32(objSubDomainValue) <> zone Then  
  111.                 subdomainRegistryKey.SetValue(subdomain.Value, zone, RegistryValueKind.DWord)  
  112.             End If  
  113.         End Using  
  114.     End Sub  
  115.   
  116. End Class  

Step 3

Create the Extension method in VB.Net using a module like this:

  1. Imports Microsoft.Win32  
  2. Imports System.Runtime.CompilerServices  
  3.   
  4. ''' <summary>  
  5. ''' This Module hold the Extension method of Registry.  
  6. ''' </summary>  
  7. ''' <remarks></remarks>  
  8. Public Module RegistryKeyExtensionMethods  
  9.   
  10.     ''' <summary>  
  11.     ''' This extension method is used to read the existing key and Create the Key.  
  12.     ''' </summary>  
  13.     ''' <param name="registryKey">RegistryKey</param>  
  14.     ''' <param name="parentString">String</param>  
  15.     ''' <param name="subString">String</param>  
  16.     ''' <returns>RegistryKey</returns>  
  17.     ''' <remarks></remarks>  
  18.     <Extension()> _  
  19.     Public Function GetOrCreateSubKey(registryKey As RegistryKey, parentString As String, subString As StringAs RegistryKey  
  20.         Dim subKey As RegistryKey = registryKey.OpenSubKey(Convert.ToString(parentString & Convert.ToString("\")) & subString, True)  
  21.         If subKey Is Nothing Then  
  22.             subKey = registryKey.CreateSubKey(parentString, subString)  
  23.         End If  
  24.         Return subKey  
  25.     End Function  
  26.   
  27.     ''' <summary>  
  28.     ''' This extension method is used to Create Sub key.  
  29.     ''' </summary>  
  30.     ''' <param name="registryKey">RegistryKey</param>  
  31.     ''' <param name="parentKeyLocation">String</param>  
  32.     ''' <param name="key">String</param>  
  33.     ''' <returns>RegistryKey</returns>  
  34.     ''' <remarks></remarks>  
  35.     <Extension()> _  
  36.     Public Function CreateSubKey(registryKey As RegistryKey, parentKeyLocation As String, key As StringAs RegistryKey  
  37.         Dim parentKey As RegistryKey = registryKey.OpenSubKey(parentKeyLocation, True)  
  38.         If parentKey Is Nothing Then  
  39.             Throw New NullReferenceException(String.Format("Missing parent key: {0}", parentKeyLocation))  
  40.         End If  
  41.         Dim createdKey As RegistryKey = parentKey.CreateSubKey(key)  
  42.         If createdKey Is Nothing Then  
  43.             Throw New Exception(String.Format("Key not created: {0}", key))  
  44.         End If  
  45.         Return createdKey  
  46.     End Function  
  47. End Module  

Step 4

Now run the application and check in the trusted site list in IE browser. You will see it as in the following:

trusted sites

Note: If you need to add a complete URL name with .com then you need to give com in the dictionary like this code.

 

  1. Dim subdomains As Dictionary(Of StringString) = New Dictionary(Of StringString)() From { _  
  2.                    {com, "http"} _  
  3.                                                                                                    }  

 


Similar Articles