- - PR -
Microsoft.Win32.Registry.LocalMachine.OpenSubKeyについて
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-11-26 23:42
こんばんは。初めまして。いつも参考にさせて頂いています。
Microsoft.Win32.Registry.LocalMachine.OpenSubKeyを使用して レジストリから値を取得する方法にてうまくいかない所があり 書込みをさせていただきました。 下記の様なレジストリ構造より Tcpip〜サブキーの全てのNameServerListキーより値を取得したいのですが どうしてもDim a As String = regkey1.GetValue("NameServerList")の所で エラーになってしまうのです。 異なるサブキーから同じキーの値取得方法を教えて下さい。 SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces |-Tcpip_{5045FBC6-4590-42AB-AB62-A08BC14C3A64} |-Tcpip_{5045FBC6-4590-42AB-AB62-A08BC14C3A65} |-Tcpip_{5045FBC6-4590-42AB-AB62-A08BC14C3A66} intK = 0 'サブキーを読み取り専用で開く Dim regkey As Microsoft.Win32.RegistryKey = _ Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces", False) If (regkey Is Nothing) Then Else Dim keyNames() As String = regkey.GetSubKeyNames() intI = regkey.SubKeyCount() ReDim Preserve strRegSubkey(intI) For Each strI In keyNames intK = intK + 1 strRegSubkey(intK) = "SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\" & (strI.ToString) Next End If regkey.Close() Dim strRegSubkey1 As String intK = 0 For intK = 1 To intI strRegSubkey1 = strRegSubkey(intK) Dim regkey1 As Microsoft.Win32.RegistryKey = _ Microsoft.Win32.Registry.LocalMachine.OpenSubKey(strRegSubkey1, False) If (regkey1 Is Nothing) Then Else Dim valueNames() As String = regkey1.GetValueNames() Dim v As String For Each v In valueNames If v.ToString = "NameServerList" Then Dim a As String = regkey1.GetValue("NameServerList") Else End If Next End If regkey1.Close() Next ちなみに,下記ではきちんと値を取得するのですが。。。 'サブキーを読み取り専用で開く Dim regkey As Microsoft.Win32.RegistryKey = _ Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\sss\Version", False) 'サブキーが存在しないときはNothingが返される If (regkey Is Nothing) Then Return '文字列を読み込む stringValue = regkey.GetValue("ssss") regkey.Close() |
|
投稿日時: 2003-11-27 08:47
> Dim a As String = regkey1.GetValue("NameServerList")
NameServerListは、REG_MULTI_SZなので、String型の配列が返ります。 Dim a() As String = regkey1.GetValue("NameServerList") としてください。 ちなみに、型は、 regkey1.GetValue("NameServerList").GetType.ToString() で確認できます。 # この手のものは、Insider.NET会議室の方が良いですよ。 |
|
投稿日時: 2003-11-27 10:06
ななさん,アドバイスありがとうございました。
次回から会議室を変更して書込みします。すいません。 さっそく,Dim a() As String = regkey1.GetValue("NameServerList")を 試してみました。おかげで,きちんと値を取得する事ができました。(^_^) For intK = 1 To intI strRegSubkey1 = strRegSubkey(intK) Dim regkey1 As Microsoft.Win32.RegistryKey = _ Microsoft.Win32.Registry.LocalMachine.OpenSubKey(strRegSubkey1, False) If (regkey1 Is Nothing) Then Else Dim valueNames() As String = regkey1.GetValueNames() Dim v As String For Each v In valueNames If v.ToString = "NameServerList" Then Dim a() As String = regkey1.GetValue("NameServerList") If a.Length > 0 Then intJ = a.Length For intL = 0 To intJ - 1 Dim dd As String = a(intL).ToString() Next End If Else End If Next End If regkey1.Close() Next |
1
