Method: PDK::Util::Windows::Process.set_environment_variable

Defined in:
lib/pdk/util/windows/process.rb

.set_environment_variable(name, val) ⇒ Object

Raises:

  • (ArgumentError)


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/pdk/util/windows/process.rb', line 35

def set_environment_variable(name, val)
  raise ArgumentError, 'Environment variable name must not be nil or empty' if name.nil? || name.empty?

  FFI::MemoryPointer.from_string_to_wide_string(name) do |name_ptr|
    if val.nil?
      if SetEnvironmentVariableW(name_ptr, FFI::MemoryPointer::NULL) == PDK::Util::Windows::WIN32_FALSE
        raise 'Failed to remove environment variable: %{name}' % { name: name }
      end
    else
      FFI::MemoryPointer.from_string_to_wide_string(val) do |val_ptr|
        if SetEnvironmentVariableW(name_ptr, val_ptr) == PDK::Util::Windows::WIN32_FALSE
          raise 'Failed to set environment variaible: %{name}' % { name: name }
        end
      end
    end
  end
end