开发者

Adding sites to Trusted list in IE (all versions above 6)

The program crashes at

var subdomain = new Dictionary

The message that Visual Studio says is "Argument exception was unhandled"

I'm not sure how to fix it or what it means? Any help would be appreciated.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;

namespace LotusTrustedSites
{       
    class ReportDownloader    
    {        
        [STAThread]        
        static void Main(string[] args)        
        {            
            const string domainsKeyLocation = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains";            
            const string domain = @"newsite.com";            
            const int trustedSiteZone = 0x2;            
            var subdomains = new Dictionary
                {                                     
                    {"www", "https"},                                     
                    {"www", "http"},                                     
                    {"blog", "https"},                              开发者_运维百科       
                    {"blog", "http"}                                 
                };            
            RegistryKey currentUserKey = Registry.CurrentUser;            
            currentUserKey.GetOrCreateSubKey(domainsKeyLocation, domain, false);            
            foreach (var subdomain in subdomains)            
            {                
                CreateSubdomainKeyAndValue(currentUserKey, domainsKeyLocation, domain, subdomain, trustedSiteZone);            
            }            //automation code        
        }        

        private static void CreateSubdomainKeyAndValue(RegistryKey currentUserKey, string domainsKeyLocation, string domain, KeyValuePair subdomain, int zone)        
        {            
            RegistryKey subdomainRegistryKey = currentUserKey.GetOrCreateSubKey(string.Format(@"{0}\{1}", domainsKeyLocation, domain), subdomain.Key, true);            
            object objSubDomainValue = subdomainRegistryKey.GetValue(subdomain.Value);            
            if (objSubDomainValue == null || Convert.ToInt32(objSubDomainValue) != zone)            
            {                
                subdomainRegistryKey.SetValue(subdomain.Value, zone, RegistryValueKind.DWord);            
            }        
        }    
    }    
    public static class RegistryKeyExtensionMethods    
    {        
        public static RegistryKey GetOrCreateSubKey(this RegistryKey registryKey, string parentKeyLocation, string key, bool writable)        
        {            
            string keyLocation = string.Format(@"{0}\{1}", parentKeyLocation, key);           
            RegistryKey foundRegistryKey = registryKey.OpenSubKey(keyLocation, writable);            
            return foundRegistryKey ?? registryKey.CreateSubKey(parentKeyLocation, key);        
        }        
        public static RegistryKey CreateSubKey(this RegistryKey registryKey, string parentKeyLocation, string key)        
        {            
            RegistryKey parentKey = registryKey.OpenSubKey(parentKeyLocation, true); //must be writable == true            
            if (parentKey == null) 
            { 
                throw new NullReferenceException(string.Format("Missing parent key: {0}", parentKeyLocation)); 
            }            
            RegistryKey createdKey = parentKey.CreateSubKey(key);            
            if (createdKey == null) 
            { 
                throw new Exception(string.Format("Key not created: {0}", key)); 
            }            
            return createdKey;        
        }    
    }
}


You have duplicate keys. Dictionary requires keys to be unique.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜