コミットメタ情報

リビジョン109eca170b5ccecfb953fc94d87a2c79b0b2c988 (tree)
日時2018-02-08 19:47:21
作者Kazuhiro Fujieda <fujieda@user...>
コミッターKazuhiro Fujieda

ログメッセージ

IEのゾーンがローカルイントラネットになることがあるのを防ぐ

変更サマリ

差分

--- a/KancolleSniffer/SystemProxy.cs
+++ b/KancolleSniffer/SystemProxy.cs
@@ -14,6 +14,7 @@
1414
1515 using System;
1616 using System.Runtime.InteropServices;
17+using Microsoft.Win32;
1718 using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
1819
1920 namespace KancolleSniffer
@@ -45,6 +46,7 @@ namespace KancolleSniffer
4546 {
4647 _orgList = list;
4748 }
49+ AdjustLocalIntranetZoneFlags();
4850 }
4951
5052 public void SetAutoConfigUrl(string url)
@@ -121,6 +123,21 @@ namespace KancolleSniffer
121123 InternetSetOption(IntPtr.Zero, InternetOption.INTERNET_OPTION_PROXY_SETTINGS_CHANGED, IntPtr.Zero, 0);
122124 }
123125
126+ /// <summary>
127+ /// PACファイルでDIRECTを指定すると、すべてのサイトがローカルイントラネットになり、
128+ /// IEが互換表示になるなどの不具合があるので、イントラネットにならないようにする
129+ /// </summary>
130+ private void AdjustLocalIntranetZoneFlags()
131+ {
132+ var zones = Registry.CurrentUser.OpenSubKey(
133+ @"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1", true);
134+ if (zones == null)
135+ return;
136+ if (!(zones.GetValue("Flags") is int flags))
137+ return;
138+ zones.SetValue("Flags", flags & (-1 ^ 0x108));
139+ }
140+
124141 [DllImport("WinInet.dll", CharSet = CharSet.Unicode)]
125142 private static extern bool InternetQueryOption(IntPtr hInternet, InternetOption dwOption,
126143 ref InternetPerConnOptionList optionList, ref int lpdwBufferLength);
旧リポジトリブラウザで表示