質問編集履歴

3

書式の改善

2015/09/19 16:46

投稿

Kei-
Kei-

スコア30

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- 現在はvbsにて開発していますが、特にこれにこだわってはいません。
17
+ 現在はvbsにて開発していますが、特にこだわってはいません。
18
18
 
19
19
 
20
20
 
@@ -76,7 +76,7 @@
76
76
 
77
77
  しかし、アダプタのGUIDまでは紐づけができ、IPアドレスの取得は実現できました。
78
78
 
79
- WindowsFirewall周りで使うにはIPアドレスがわかれば十分なので、この以下のやり方でいこうと思います。
79
+ WindowsFirewall周りで使うにはIPアドレスがわかれば十分なので、以下のやり方でいこうと思います。
80
80
 
81
81
 
82
82
 
@@ -102,33 +102,23 @@
102
102
 
103
103
  Console.WriteLine(network.GetAdapterId());
104
104
 
105
-
106
-
107
105
  // 使用しているネットワークプロファイルを取得
108
106
 
109
107
  INetwork Connection = network.GetNetwork();
110
-
111
-
112
108
 
113
109
  // ② 使用しているプロファイル名を表示
114
110
 
115
111
  Console.WriteLine(Connection.GetName());
116
112
 
117
-
118
-
119
113
  // ③ 適用されているネットワークカテゴリを表示
120
114
 
121
115
  Console.WriteLine(Connection.GetCategory().ToString());
122
-
123
-
124
116
 
125
117
  // アダプターのGUIDを元にレジストリからIPアドレスを取得する
126
118
 
127
119
  Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
128
120
 
129
121
  @"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{" + network.GetAdapterId() +"}", false );
130
-
131
-
132
122
 
133
123
  if (regkey != null)
134
124
 
@@ -137,8 +127,6 @@
137
127
  String IPAddress = (String)regkey.GetValue("IPAddress");
138
128
 
139
129
  if (IPAddress == null) IPAddress = (String)regkey.GetValue("DHCPIPAddress");
140
-
141
-
142
130
 
143
131
  // ④ IPアドレスを出力する
144
132
 

2

書式の改善

2015/09/19 16:46

投稿

Kei-
Kei-

スコア30

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,7 @@
82
82
 
83
83
  (PowerShellで書き上げるスキルがなく突如C#になりました)
84
84
 
85
- -------------------------------------------------------------------------
85
+ ```C#
86
86
 
87
87
  // 現在有効なリンクアップ対象を取得
88
88
 
@@ -98,7 +98,7 @@
98
98
 
99
99
  {
100
100
 
101
- // 対象アダプターのGUIDを取得
101
+ // 対象アダプターのGUIDを表示
102
102
 
103
103
  Console.WriteLine(network.GetAdapterId());
104
104
 
@@ -110,13 +110,13 @@
110
110
 
111
111
 
112
112
 
113
- // ネットワークプロファイルで指定されているプロファイル名
113
+ // ② 使用しているプロファイル名を表示
114
114
 
115
115
  Console.WriteLine(Connection.GetName());
116
116
 
117
117
 
118
118
 
119
- // ネットワークプロファイルで指定されているカテゴリ情報
119
+ // ③ 適用されているネットワークカテゴリを表示
120
120
 
121
121
  Console.WriteLine(Connection.GetCategory().ToString());
122
122
 
@@ -124,15 +124,9 @@
124
124
 
125
125
  // アダプターのGUIDを元にレジストリからIPアドレスを取得する
126
126
 
127
- Microsoft.Win32.RegistryKey regkey =
127
+ Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
128
128
 
129
- Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
130
-
131
- @"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{" + network.GetAdapterId() +"}",
129
+ @"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{" + network.GetAdapterId() +"}", false );
132
-
133
- false
134
-
135
- );
136
130
 
137
131
 
138
132
 
@@ -142,13 +136,11 @@
142
136
 
143
137
  String IPAddress = (String)regkey.GetValue("IPAddress");
144
138
 
139
+ if (IPAddress == null) IPAddress = (String)regkey.GetValue("DHCPIPAddress");
140
+
145
141
 
146
142
 
147
- if (IPAddress == null)
143
+ // IPアドレスを出力する
148
-
149
- IPAddress = (String)regkey.GetValue("DHCPIPAddress");
150
-
151
-
152
144
 
153
145
  if (IPAddress != null) Console.WriteLine(IPAddress);
154
146
 
@@ -156,7 +148,7 @@
156
148
 
157
149
  }
158
150
 
159
- ------------------------------------------------------------------------------------------
151
+ ```
160
152
 
161
153
  25d921e3-f2ef-2ae1-3f9f-1234430ac421
162
154
 

1

最終版のコードを追記

2015/09/19 16:44

投稿

Kei-
Kei-

スコア30

test CHANGED
File without changes
test CHANGED
@@ -65,3 +65,103 @@
65
65
  何か良い手法ご存じないでしょうか。
66
66
 
67
67
  妙案ございましたらご教示頂ければ幸いです。何卒お願い申し上げます。
68
+
69
+
70
+
71
+
72
+
73
+ === 9/20 1:30 追記 ===
74
+
75
+ 最終的にネットワークアダプタとネットワークカテゴリの紐づけは完全にはできませんでした。
76
+
77
+ しかし、アダプタのGUIDまでは紐づけができ、IPアドレスの取得は実現できました。
78
+
79
+ WindowsFirewall周りで使うにはIPアドレスがわかれば十分なので、この以下のやり方でいこうと思います。
80
+
81
+
82
+
83
+ (PowerShellで書き上げるスキルがなく突如C#になりました)
84
+
85
+ -------------------------------------------------------------------------
86
+
87
+ // 現在有効なリンクアップ対象を取得
88
+
89
+ NetworkListManager networkListMgr = new NetworkListManager();
90
+
91
+ IEnumNetworkConnections netWorks = networkListMgr.GetNetworkConnections();
92
+
93
+
94
+
95
+ // リンクアップ1接続ごとに回す
96
+
97
+ foreach (INetworkConnection network in netWorks)
98
+
99
+ {
100
+
101
+ // 対象アダプターのGUIDを取得
102
+
103
+ Console.WriteLine(network.GetAdapterId());
104
+
105
+
106
+
107
+ // 使用しているネットワークプロファイルを取得
108
+
109
+ INetwork Connection = network.GetNetwork();
110
+
111
+
112
+
113
+ // ネットワークプロファイルで指定されているプロファイル名
114
+
115
+ Console.WriteLine(Connection.GetName());
116
+
117
+
118
+
119
+ // ネットワークプロファイルで指定されているカテゴリ情報
120
+
121
+ Console.WriteLine(Connection.GetCategory().ToString());
122
+
123
+
124
+
125
+ // アダプターのGUIDを元にレジストリからIPアドレスを取得する
126
+
127
+ Microsoft.Win32.RegistryKey regkey =
128
+
129
+ Microsoft.Win32.Registry.LocalMachine.OpenSubKey(
130
+
131
+ @"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{" + network.GetAdapterId() +"}",
132
+
133
+ false
134
+
135
+ );
136
+
137
+
138
+
139
+ if (regkey != null)
140
+
141
+ {
142
+
143
+ String IPAddress = (String)regkey.GetValue("IPAddress");
144
+
145
+
146
+
147
+ if (IPAddress == null)
148
+
149
+ IPAddress = (String)regkey.GetValue("DHCPIPAddress");
150
+
151
+
152
+
153
+ if (IPAddress != null) Console.WriteLine(IPAddress);
154
+
155
+ }
156
+
157
+ }
158
+
159
+ ------------------------------------------------------------------------------------------
160
+
161
+ 25d921e3-f2ef-2ae1-3f9f-1234430ac421
162
+
163
+ HogeHogeWifi
164
+
165
+ NLM_NETWORK_CATEGORY_PUBLIC
166
+
167
+ 192.168.1.1