/// <summary>
        ///
        /// </summary>
        /// <exception cref="ArgumentNullException">The <strong>uri</strong> parameter is null or empty.</exception>
        /// <param name="uri"></param>
        /// <param name="publishFlags"></param>
        /// <returns></returns>
        /// <remarks>
        /// <p>Only absolute (local), UNC paths and LDAP:// URLs are supported for CRT file publishing.</p>
        /// <p>Only LDAP:// and HTTP:// URLs are supported for CRT file retrieval.</p>
        /// </remarks>
        public static CertSrvAiaUrlEntry FromConfigUri(String uri, CertSrvAiaPublishFlags publishFlags)
        {
            if (String.IsNullOrWhiteSpace(uri))
            {
                throw new ArgumentException("'uri' parameter cannot be null or empty string.");
            }

            return(new CertSrvAiaUrlEntry(uri, true, publishFlags));
        }
        CertSrvAiaUrlEntry(String uri, Boolean isConfigUri, CertSrvAiaPublishFlags publishFlags)
        {
            if (isConfigUri)
            {
                initializeFromConfig(uri, publishFlags);
            }
            else
            {
                initializeFromReg(uri);
            }

            getUrlScheme();
        }
        void initializeFromReg(String regUri)
        {
            var   regex = new Regex(@"(^\d+):(.+)");
            Match match = regex.Match(regUri);

            if (match.Success)
            {
                Int16 matches = Convert.ToInt16(match.Groups[1].Value);
                flags = (CertSrvAiaPublishFlags)matches;
                Uri   = translateRegToConfigVar(match.Groups[2].Value);
            }
            else
            {
                throw new FormatException();
            }
        }
 void initializeFromConfig(String configUri, CertSrvAiaPublishFlags publishFlags)
 {
     Uri   = configUri;
     flags = publishFlags;
 }