예제 #1
0
/* Open a subkey of the service Services\<service_name>\<sub>. */
long open_registry(const TCHAR *service_name, const TCHAR *sub, REGSAM sam, HKEY *key, bool must_exist) {
  /* Get registry */
  TCHAR registry[KEY_LENGTH];
  if (service_registry_path(service_name, true, sub, registry, _countof(registry)) < 0) {
    log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_OUT_OF_MEMORY, NSSM_REGISTRY, _T("open_registry()"), 0);
    return 0;
  }

  return open_registry_key(registry, sam, key, must_exist);
}
예제 #2
0
ERL_NIF_TERM
add_registry_info(ErlNifEnv *env, char *event_source)
{
    DWORD disposition;
    HKEY key;
    char *subkey;

    WINAPI_LASTERR(env,
            subkey = string_format(registry_key_format, event_source));
    WINAPI_ERR(env,
            open_registry_key(HKEY_LOCAL_MACHINE, subkey, &key, &disposition));
    LocalFree(subkey);

    if (disposition == REG_CREATED_NEW_KEY)
        NIF_ERR( initialize_event_log_registry_key(env, key) );

    WINAPI_ERR(env, RegCloseKey(key));

    return NIF_SUCCESS;
}
예제 #3
0
static HKEY open_registry_key(const TCHAR *registry, REGSAM sam, bool must_exist) {
  HKEY key;
  long error = open_registry_key(registry, sam, &key, must_exist);
  return key;
}