summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2025-02-04 17:22:09 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2025-02-05 07:36:59 +0900
commit333bc26d82370e2f5d324c1a24e7885fde4b9657 (patch)
tree80ed884cafe234d682f8dbb4f099bd6d34ec85db
parenta487698cc789624924ef5e309ffbffcc36f754ca (diff)
Added get_item_property and use it for Win32::Registry and Get-ItemProperty
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/12616
-rw-r--r--ext/win32/lib/win32/resolv.rb76
1 files changed, 19 insertions, 57 deletions
diff --git a/ext/win32/lib/win32/resolv.rb b/ext/win32/lib/win32/resolv.rb
index bf19ef79e2..0ea09ba82e 100644
--- a/ext/win32/lib/win32/resolv.rb
+++ b/ext/win32/lib/win32/resolv.rb
@@ -82,47 +82,16 @@ module Win32
search = nil
nameserver = get_dns_server_list
- slist = if defined?(Win32::Registry)
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
- reg.read_s('SearchList')
- rescue Registry::Error
- ""
- end
- else
- cmd = "Get-ItemProperty -Path 'HKLM:\\#{TCPIP_NT}' -Name 'SearchList' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty SearchList"
- output, _ = Open3.capture2('powershell', '-Command', cmd)
- output.strip
- end
+ slist = get_item_property(TCPIP_NT, 'SearchList')
search = slist.split(/,\s*/) unless slist.empty?
if add_search = search.nil?
search = []
- nvdom = if defined?(Win32::Registry)
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
- reg.read_s('NV Domain')
- rescue Registry::Error
- ""
- end
- else
- cmd = "Get-ItemProperty -Path 'HKLM:\\#{TCPIP_NT}' -Name 'NV Domain' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty NV domain"
- output, _ = Open3.capture2('powershell', '-Command', cmd)
- output.strip
- end
+ nvdom = get_item_property(TCPIP_NT, 'NV Domain')
unless nvdom.empty?
@search = [ nvdom ]
- udmnd = if defined?(Win32::Registry)
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
- reg.read_i('UseDomainNameDevolution')
- rescue Registry::Error
- 0
- end
- else
- cmd = "Get-ItemProperty -Path 'HKLM:\\#{TCPIP_NT}' -Name 'UseDomainNameDevolution' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty UseDomainNameDevolution"
- output, _ = Open3.capture2('powershell', '-Command', cmd)
- output.strip.to_i
- end
-
+ udmnd = get_item_property(TCPIP_NT, 'UseDomainNameDevolution').to_i
if udmnd != 0
if /^\w+\./ =~ nvdom
devo = $'
@@ -131,7 +100,6 @@ module Win32
end
end
-
ifs = if defined?(Win32::Registry)
Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT + '\Interfaces') do |reg|
reg.keys
@@ -146,17 +114,7 @@ module Win32
ifs.each do |iface|
next unless ns = %w[NameServer DhcpNameServer].find do |key|
- ns = if defined?(Win32::Registry)
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT + '\Interfaces' + "\\#{iface}" ) do |regif|
- regif.read_s(key)
- rescue Registry::Error
- ""
- end
- else
- cmd = "Get-ItemProperty -Path 'HKLM:\\#{TCPIP_NT}' -Name '#{key}' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty #{key}"
- output, _ = Open3.capture2('powershell', '-Command', cmd)
- output.strip
- end
+ ns = get_item_property(TCPIP_NT + '\Interfaces' + "\\#{iface}", key)
break ns.split(/[,\s]\s*/) unless ns.empty?
end
@@ -164,17 +122,7 @@ module Win32
if add_search
[ 'Domain', 'DhcpDomain' ].each do |key|
- dom = if defined?(Win32::Registry)
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT + '\Interfaces' + "\\#{iface}" ) do |regif|
- regif.read_s(key)
- rescue Registry::Error
- ""
- end
- else
- cmd = "Get-ItemProperty -Path 'HKLM:\\#{TCPIP_NT}' -Name '#{key}' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty #{key}"
- output, _ = Open3.capture2('powershell', '-Command', cmd)
- output.strip
- end
+ dom = get_item_property(TCPIP_NT + '\Interfaces' + "\\#{iface}", key)
unless dom.empty?
search.concat(dom.split(/,\s*/))
break
@@ -185,6 +133,20 @@ module Win32
search << devo if add_search and devo
[ search.uniq, nameserver.uniq ]
end
+
+ def get_item_property(path, name)
+ if defined?(Win32::Registry)
+ Registry::HKEY_LOCAL_MACHINE.open(path) do |reg|
+ reg.read_s(key)
+ rescue Registry::Error
+ ""
+ end
+ else
+ cmd = "Get-ItemProperty -Path 'HKLM:\\#{path}' -Name '#{name}' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty #{name}"
+ output, _ = Open3.capture2('powershell', '-Command', cmd)
+ output.strip
+ end
+ end
end
end
end