Files

Class/Module Index [+]

Quicksearch

Chef::Provider::Env::Windows

Public Instance Methods

broadcast_env_change() click to toggle source
# File lib/chef/provider/env/windows.rb, line 70
def broadcast_env_change
  flags = SMTO_BLOCK | SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG
  SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, FFI::MemoryPointer.from_string('Environment').address, flags, 5000, nil)
end
create_env() click to toggle source
# File lib/chef/provider/env/windows.rb, line 27
def create_env
  obj = env_obj(@new_resource.key_name)
  unless obj
    obj = WIN32OLE.connect("winmgmts://").get("Win32_Environment").spawninstance_
    obj.name = @new_resource.key_name
    obj.username = "<System>"
  end
  obj.variablevalue = @new_resource.value
  obj.put_
  ENV[@new_resource.key_name] = @new_resource.value
  broadcast_env_change
end
delete_env() click to toggle source
# File lib/chef/provider/env/windows.rb, line 40
def delete_env
  obj = env_obj(@new_resource.key_name)
  if obj
    obj.delete_
    ENV.delete(@new_resource.key_name)
    broadcast_env_change
  end
end
env_obj(key_name) click to toggle source
# File lib/chef/provider/env/windows.rb, line 54
def env_obj(key_name)
  wmi = WmiLite::Wmi.new
  # Note that by design this query is case insensitive with regard to key_name
  environment_variables = wmi.query("select * from Win32_Environment where name = '#{key_name}'")
  if environment_variables && environment_variables.length > 0
    environment_variables[0].wmi_ole_object
  end
end
env_value(key_name) click to toggle source
# File lib/chef/provider/env/windows.rb, line 49
def env_value(key_name)
  obj = env_obj(key_name)
  return obj ? obj.variablevalue : nil
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.