OSDN Git Service

IEのゾーンがローカルイントラネットになることがあるのを防ぐ
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 3 Feb 2018 11:05:15 +0000 (20:05 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 8 Feb 2018 10:47:21 +0000 (19:47 +0900)
KancolleSniffer/SystemProxy.cs

index bcc47d3..d8cd87b 100644 (file)
@@ -14,6 +14,7 @@
 \r
 using System;\r
 using System.Runtime.InteropServices;\r
+using Microsoft.Win32;\r
 using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;\r
 \r
 namespace KancolleSniffer\r
@@ -45,6 +46,7 @@ namespace KancolleSniffer
             {\r
                 _orgList = list;\r
             }\r
+            AdjustLocalIntranetZoneFlags();\r
         }\r
 \r
         public void SetAutoConfigUrl(string url)\r
@@ -121,6 +123,21 @@ namespace KancolleSniffer
             InternetSetOption(IntPtr.Zero, InternetOption.INTERNET_OPTION_PROXY_SETTINGS_CHANGED, IntPtr.Zero, 0);\r
         }\r
 \r
+        /// <summary>\r
+        /// PACファイルでDIRECTを指定すると、すべてのサイトがローカルイントラネットになり、\r
+        /// IEが互換表示になるなどの不具合があるので、イントラネットにならないようにする\r
+        /// </summary>\r
+        private void AdjustLocalIntranetZoneFlags()\r
+        {\r
+            var zones = Registry.CurrentUser.OpenSubKey(\r
+                @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1", true);\r
+            if (zones == null)\r
+                return;\r
+            if (!(zones.GetValue("Flags") is int flags))\r
+                return;\r
+            zones.SetValue("Flags", flags & (-1 ^ 0x108));\r
+        }\r
+\r
         [DllImport("WinInet.dll", CharSet = CharSet.Unicode)]\r
         private static extern bool InternetQueryOption(IntPtr hInternet, InternetOption dwOption,\r
             ref InternetPerConnOptionList optionList, ref int lpdwBufferLength);\r