regCreateKey function

void regCreateKey(
  1. HKEY hKey,
  2. String subKey
)

Creates a registry key.

Throws a WindowsException if the key cannot be created. @Throwing(WindowsException)

Implementation

void regCreateKey(
  HKEY hKey,
  String subKey,
) {
  final pOpenKey = calloc<Pointer>();
  final pSubKey = subKey.toNativeUtf16();
  try {
    final result = RegCreateKeyEx(
        hKey,
        PCWSTR(pSubKey),
        null,
        REG_OPTION_NON_VOLATILE,
        KEY_QUERY_VALUE,
        null, // not inheritable
        pOpenKey,
        nullptr);

    if (result != ERROR_SUCCESS) {
      throw WindowsException(HRESULT_FROM_WIN32(result));
    }
    HKEY(pOpenKey.value).close();
  } finally {
    calloc
      ..free(pOpenKey)
      ..free(pSubKey);
  }
}