summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/chef/win32/registry.rb21
1 files changed, 9 insertions, 12 deletions
diff --git a/lib/chef/win32/registry.rb b/lib/chef/win32/registry.rb
index 830fd300a0..e7eeb6c973 100644
--- a/lib/chef/win32/registry.rb
+++ b/lib/chef/win32/registry.rb
@@ -91,8 +91,15 @@ class Chef
return true
end
hive.open(key, ::Win32::Registry::KEY_SET_VALUE | registry_system_architecture) do |reg|
- reg_delete_value(reg, value[:name])
- Chef::Log.debug("Deleted value #{value[:name]} from registry key #{key_path}")
+ # ::Win32::Registry#delete_value is broken in Ruby 2.1 (up to Ruby 2.1.6p336).
+ # This should be resolved a later release (see note #9 in link below).
+ # https://bugs.ruby-lang.org/issues/10820
+ if RegDeleteValueW(reg.hkey, wstring(value[:name]))
+ Chef::Log.debug("Deleted value #{value[:name]} from registry key #{key_path}")
+ else
+ Chef::Log.debug("Unable to delete value #{value[:name]} from registry key #{key_path}")
+ return false
+ end
end
else
Chef::Log.debug("Value #{value[:name]} in registry key #{key_path} does not exist, not updated")
@@ -393,16 +400,6 @@ class Chef
hive_name = reg_path.shift
key = reg_path.join("\\")
end
-
- # ::Win32::Registry#delete_value is broken in Ruby 2.1
- # (up to Ruby 2.1.6p336). This should be resolved a
- # later release (see note #9 in link below).
- # https://bugs.ruby-lang.org/issues/10820
- def reg_delete_value(reg, value)
- unless RegDeleteValueW(reg.hkey, wstring(value))
- Chef::ReservedNames::Win32::Error.raise!
- end
- end
end
end
end