module Win32::Registry::API

Win32 APIs

Constants

TEMPLATE_DWORD
TEMPLATE_HANDLE
TEMPLATE_QWORD

Public Instance Methods

CloseKey (hkey)
# File ext/win32/lib/win32/registry.rb, line 355
def CloseKey(hkey)
  check RegCloseKey.call(hkey)
end
CreateKey (hkey, name, opt, desired)
# File ext/win32/lib/win32/registry.rb, line 301
def CreateKey(hkey, name, opt, desired)
  result = packhandle(0)
  disp = packdw(0)
  check RegCreateKeyExW.call(hkey, make_wstr(name), 0, 0, opt, desired,
                             0, result, disp)
  [ unpackhandle(result), unpackdw(disp) ]
end
DeleteKey (hkey, name)
# File ext/win32/lib/win32/registry.rb, line 347
def DeleteKey(hkey, name)
  check RegDeleteKeyW.call(hkey, make_wstr(name))
end
DeleteValue (hkey, name)
# File ext/win32/lib/win32/registry.rb, line 343
def DeleteValue(hkey, name)
  check RegDeleteValueW.call(hkey, make_wstr(name))
end
EnumKey (hkey, index)
# File ext/win32/lib/win32/registry.rb, line 316
def EnumKey(hkey, index)
  name = WCHAR_NUL * Constants::MAX_KEY_LENGTH
  size = packdw(Constants::MAX_KEY_LENGTH)
  wtime = ' ' * 8
  check RegEnumKeyExW.call(hkey, index, name, size, 0, 0, 0, wtime)
  [ name.byteslice(0, unpackdw(size) * WCHAR_SIZE), unpackqw(wtime) ]
end
EnumValue (hkey, index)
# File ext/win32/lib/win32/registry.rb, line 309
def EnumValue(hkey, index)
  name = WCHAR_NUL * Constants::MAX_KEY_LENGTH
  size = packdw(Constants::MAX_KEY_LENGTH)
  check RegEnumValueW.call(hkey, index, name, size, 0, 0, 0, 0)
  name.byteslice(0, unpackdw(size) * WCHAR_SIZE)
end
FlushKey (hkey)
# File ext/win32/lib/win32/registry.rb, line 351
def FlushKey(hkey)
  check RegFlushKey.call(hkey)
end
OpenKey (hkey, name, opt, desired)
# File ext/win32/lib/win32/registry.rb, line 295
def OpenKey(hkey, name, opt, desired)
  result = packhandle(0)
  check RegOpenKeyExW.call(hkey, make_wstr(name), opt, desired, result)
  unpackhandle(result)
end
QueryInfoKey (hkey)
# File ext/win32/lib/win32/registry.rb, line 359
def QueryInfoKey(hkey)
  subkeys = packdw(0)
  maxsubkeylen = packdw(0)
  values = packdw(0)
  maxvaluenamelen = packdw(0)
  maxvaluelen = packdw(0)
  secdescs = packdw(0)
  wtime = ' ' * 8
  check RegQueryInfoKey.call(hkey, 0, 0, 0, subkeys, maxsubkeylen, 0,
    values, maxvaluenamelen, maxvaluelen, secdescs, wtime)
  [ unpackdw(subkeys), unpackdw(maxsubkeylen), unpackdw(values),
    unpackdw(maxvaluenamelen), unpackdw(maxvaluelen),
    unpackdw(secdescs), unpackqw(wtime) ]
end
QueryValue (hkey, name)
# File ext/win32/lib/win32/registry.rb, line 324
def QueryValue(hkey, name)
  type = packdw(0)
  size = packdw(0)
  name = make_wstr(name)
  check RegQueryValueExW.call(hkey, name, 0, type, 0, size)
  data = "\0".b * unpackdw(size)
  check RegQueryValueExW.call(hkey, name, 0, type, data, size)
  [ unpackdw(type), data[0, unpackdw(size)] ]
end
SetValue (hkey, name, type, data, size)
# File ext/win32/lib/win32/registry.rb, line 334
def SetValue(hkey, name, type, data, size)
  case type
  when REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ
    data = data.encode(WCHAR)
    size ||= data.bytesize + WCHAR_SIZE
  end
  check RegSetValueExW.call(hkey, make_wstr(name), 0, type, data, size)
end
check (result)
# File ext/win32/lib/win32/registry.rb, line 253
def check(result)
  raise Error, result, caller(1) if result != 0
end
make_wstr (str)
# File ext/win32/lib/win32/registry.rb, line 291
def make_wstr(str)
  str.encode(WCHAR)
end
packdw (dw)
# File ext/win32/lib/win32/registry.rb, line 273
def packdw(dw)
  [dw].pack(TEMPLATE_DWORD)
end
packhandle (h)
# File ext/win32/lib/win32/registry.rb, line 263
def packhandle(h)
  [h].pack(TEMPLATE_HANDLE)
end
packqw (qw)
# File ext/win32/lib/win32/registry.rb, line 283
def packqw(qw)
  [qw].pack(TEMPLATE_QWORD)
end
unpackdw (dw)
# File ext/win32/lib/win32/registry.rb, line 277
def unpackdw(dw)
  (dw + [0].pack(TEMPLATE_DWORD)).unpack1(TEMPLATE_DWORD)
end
unpackhandle (h)
# File ext/win32/lib/win32/registry.rb, line 267
def unpackhandle(h)
  (h + [0].pack(TEMPLATE_HANDLE)).unpack1(TEMPLATE_HANDLE)
end
unpackqw (qw)
# File ext/win32/lib/win32/registry.rb, line 287
def unpackqw(qw)
  (qw + [0].pack(TEMPLATE_QWORD)).unpack1(TEMPLATE_QWORD)
end
win64? ()
# File ext/win32/lib/win32/registry.rb, line 257
def win64?
  /^(?:x64|x86_64)/ =~ RUBY_PLATFORM
end