private static void DetermineSupport() { Console.Write("Determining client hook method..."); switch (OSVersion) { case OSVersionType.Win8: NameServerHookMethod = NameServerHookMethodType.CacheHook; break; default: // case OSVersionType.Win7: NameServerHookMethod = NameServerHookMethodType.ChangeNS; break; } Console.WriteLine(" {0}", NameServerHookMethod); }
private void InsertCacheHook() { var key = GetDnsCacheConfigKey(true); if (key != null) { var subs = key.GetSubKeyNames(); RegistryKey found = null; foreach (string name in subs) { var configKey = Registry.LocalMachine.OpenSubKey(DnsPolicyCacheConfigName + name); var val = configKey.GetValue("Name", null) as string[]; if (name == configGUID) { if (found != null) // duplicate found { DeleteConfigKey(key, name); } else if (!val.Contains(".bit")) { found = null; DeleteConfigKey(key, name); } else { found = configKey; } } else if (val.Contains(".bit")) { DeleteConfigKey(key, name); } } if (key != null && found == null) { InstallDnsCacheConfigKeys(key); } } else { RemoveCacheHook(); NameServerHookMethod = NameServerHookMethodType.ChangeNS; Console.WriteLine("CacheConfig Failed: switching to {0}", NameServerHookMethod); } }