libregf(3)
π libregf(3) π
okay so this is the libregf(3) page from the Library Functions Manual. she's all about the Windows NT Registry File (REGF) format, and she's here to help you access it. no cap, she's a real one. π¦β¨
β¨ NAME β¨
libregf.h β Library to access the Windows NT Registry File (REGF) format
πΈ SYNOPSIS πΈ
bestie, here's the whole synopsis, exactly as written. every prototype is literal, don't come for me. π
#include <libregf.h>
π«Ά Support functions π«Ά
const char *
libregf_get_version(void);
int
libregf_get_access_flags_read(void);
int
libregf_get_codepage(int *codepage, libregf_error_t **error);
int
libregf_set_codepage(int codepage, libregf_error_t **error);
int
libregf_check_file_signature(const char *filename,
libregf_error_t **error);
Available when compiled with wide character string support:
int
libregf_check_file_signature_wide(const wchar_t *filename,
libregf_error_t **error);
Available when compiled with libbfio support:
int
libregf_check_file_signature_file_io_handle(libbfio_handle_t *bfio_handle,
libregf_error_t **error);
π Notify functions π
void
libregf_notify_set_verbose(int verbose);
int
libregf_notify_set_stream(FILE *stream, libregf_error_t **error);
int
libregf_notify_stream_open(const char *filename,
libregf_error_t **error);
int
libregf_notify_stream_close(libregf_error_t **error);
π Error functions π
void
libregf_error_free(libregf_error_t **error);
int
libregf_error_fprint(libregf_error_t *error, FILE *stream);
int
libregf_error_sprint(libregf_error_t *error, char *string, size_t size);
int
libregf_error_backtrace_fprint(libregf_error_t *error, FILE *stream);
int
libregf_error_backtrace_sprint(libregf_error_t *error, char *string,
size_t size);
π File functions π
int
libregf_file_initialize(libregf_file_t **file, libregf_error_t **error);
int
libregf_file_free(libregf_file_t **file, libregf_error_t **error);
int
libregf_file_signal_abort(libregf_file_t *file,
libregf_error_t **error);
int
libregf_file_open(libregf_file_t *file, const char *filename,
int access_flags, libregf_error_t **error);
int
libregf_file_close(libregf_file_t *file, libregf_error_t **error);
int
libregf_file_is_corrupted(libregf_file_t *file,
libregf_error_t **error);
int
libregf_file_get_ascii_codepage(libregf_file_t *file,
int *ascii_codepage, libregf_error_t **error);
int
libregf_file_set_ascii_codepage(libregf_file_t *file,
int ascii_codepage, libregf_error_t **error);
int
libregf_file_get_format_version(libregf_file_t *file,
uint32_t *major_version, uint32_t *minor_version,
libregf_error_t **error);
int
libregf_file_get_type(libregf_file_t *file, uint32_t *file_type,
libregf_error_t **error);
int
libregf_file_get_root_key(libregf_file_t *file, libregf_key_t **key,
libregf_error_t **error);
int
libregf_file_get_key_by_utf8_path(libregf_file_t *file,
const uint8_t *utf8_string, size_t utf8_string_length,
libregf_key_t **key, libregf_error_t **error);
int
libregf_file_get_key_by_utf16_path(libregf_file_t *file,
const uint16_t *utf16_string, size_t utf16_string_length,
libregf_key_t **key, libregf_error_t **error);
Available when compiled with wide character string support:
int
libregf_file_open_wide(libregf_file_t *file, const wchar_t *filename,
int access_flags, libregf_error_t **error);
Available when compiled with libbfio support:
int
libregf_file_open_file_io_handle(libregf_file_t *file,
libbfio_handle_t *file_io_handle, int access_flags,
libregf_error_t **error);
π Key functions π
int
libregf_key_free(libregf_key_t **key, libregf_error_t **error);
int
libregf_key_is_corrupted(libregf_key_t *key, libregf_error_t **error);
int
libregf_key_get_offset(libregf_key_t *key, off64_t *offset,
libregf_error_t **error);
int
libregf_key_get_name_size(libregf_key_t *key, size_t *name_size,
libregf_error_t **error);
int
libregf_key_get_name(libregf_key_t *key, uint8_t *name,
size_t name_size, libregf_error_t **error);
int
libregf_key_get_utf8_name_size(libregf_key_t *key,
size_t *utf8_string_size, libregf_error_t **error);
int
libregf_key_get_utf8_name(libregf_key_t *key, uint8_t *utf8_string,
size_t utf8_string_size, libregf_error_t **error);
int
libregf_key_get_utf16_name_size(libregf_key_t *key,
size_t *utf16_string_size, libregf_error_t **error);
int
libregf_key_get_utf16_name(libregf_key_t *key, uint16_t *utf16_string,
size_t utf16_string_size, libregf_error_t **error);
int
libregf_key_get_class_name_size(libregf_key_t *key,
size_t *class_name_size, libregf_error_t **error);
int
libregf_key_get_class_name(libregf_key_t *key, uint8_t *class_name,
size_t class_name_size, libregf_error_t **error);
int
libregf_key_get_utf8_class_name_size(libregf_key_t *key,
size_t *utf8_string_size, libregf_error_t **error);
int
libregf_key_get_utf8_class_name(libregf_key_t *key,
uint8_t *utf8_string, size_t utf8_string_size,
libregf_error_t **error);
int
libregf_key_get_utf16_class_name_size(libregf_key_t *key,
size_t *utf16_string_size, libregf_error_t **error);
int
libregf_key_get_utf16_class_name(libregf_key_t *key,
uint16_t *utf16_string, size_t utf16_string_size,
libregf_error_t **error);
int
libregf_key_get_last_written_time(libregf_key_t *key,
uint64_t *filetime, libregf_error_t **error);
int
libregf_key_get_security_descriptor_size(libregf_key_t *key,
size_t *security_descriptor_size, libregf_error_t **error);
int
libregf_key_get_security_descriptor(libregf_key_t *key,
uint8_t *security_descriptor, size_t security_descriptor_size,
libregf_error_t **error);
int
libregf_key_get_number_of_values(libregf_key_t *key,
int *number_of_values, libregf_error_t **error);
int
libregf_key_get_value_by_index(libregf_key_t *key, int value_index,
libregf_value_t **value, libregf_error_t **error);
int
libregf_key_get_value_by_utf8_name(libregf_key_t *key,
const uint8_t *utf8_string, size_t utf8_string_length,
libregf_value_t **value, libregf_error_t **error);
int
libregf_key_get_value_by_utf16_name(libregf_key_t *key,
const uint16_t *utf16_string, size_t utf16_string_length,
libregf_value_t **value, libregf_error_t **error);
int
libregf_key_get_number_of_sub_keys(libregf_key_t *key,
int *number_of_sub_keys, libregf_error_t **error);
int
libregf_key_get_sub_key_by_index(libregf_key_t *key, int sub_key_index,
libregf_key_t **sub_key, libregf_error_t **error);
int
libregf_key_get_sub_key_by_utf8_name(libregf_key_t *key,
const uint8_t *utf8_string, size_t utf8_string_length,
libregf_key_t **sub_key, libregf_error_t **error);
int
libregf_key_get_sub_key_by_utf8_path(libregf_key_t *key,
const uint8_t *utf8_string, size_t utf8_string_length,
libregf_key_t **sub_key, libregf_error_t **error);
int
libregf_key_get_sub_key_by_utf16_name(libregf_key_t *key,
const uint16_t *utf16_string, size_t utf16_string_length,
libregf_key_t **sub_key, libregf_error_t **error);
int
libregf_key_get_sub_key_by_utf16_path(libregf_key_t *key,
const uint16_t *utf16_string, size_t utf16_string_length,
libregf_key_t **sub_key, libregf_error_t **error);
π Value functions π
int
libregf_value_free(libregf_value_t **value, libregf_error_t **error);
int
libregf_value_is_corrupted(libregf_value_t *value,
libregf_error_t **error);
int
libregf_value_get_offset(libregf_value_t *value, off64_t *offset,
libregf_error_t **error);
int
libregf_value_get_name_size(libregf_value_t *value, size_t *name_size,
libregf_error_t **error);
int
libregf_value_get_name(libregf_value_t *value, uint8_t *name,
size_t name_size, libregf_error_t **error);
int
libregf_value_get_utf8_name_size(libregf_value_t *value,
size_t *utf8_string_size, libregf_error_t **error);
int
libregf_value_get_utf8_name(libregf_value_t *value,
uint8_t *utf8_string, size_t utf8_string_size,
libregf_error_t **error);
int
libregf_value_get_utf16_name_size(libregf_value_t *value,
size_t *utf16_string_size, libregf_error_t **error);
int
libregf_value_get_utf16_name(libregf_value_t *value,
uint16_t *utf16_string, size_t utf16_string_size,
libregf_error_t **error);
int
libregf_value_get_value_type(libregf_value_t *value,
uint32_t *value_type, libregf_error_t **error);
int
libregf_value_get_value_data_size(libregf_value_t *value,
size_t *value_data_size, libregf_error_t **error);
int
libregf_value_get_value_data(libregf_value_t *value,
uint8_t *value_data, size_t value_data_size,
libregf_error_t **error);
int
libregf_value_get_value_32bit(libregf_value_t *value,
uint32_t *value_32bit, libregf_error_t **error);
int
libregf_value_get_value_64bit(libregf_value_t *value,
uint64_t *value_64bit, libregf_error_t **error);
int
libregf_value_get_value_utf8_string_size(libregf_value_t *value,
size_t *utf8_string_size, libregf_error_t **error);
int
libregf_value_get_value_utf8_string(libregf_value_t *value,
uint8_t *utf8_string, size_t utf8_string_size,
libregf_error_t **error);
int
libregf_value_get_value_utf16_string_size(libregf_value_t *value,
size_t *utf16_string_size, libregf_error_t **error);
int
libregf_value_get_value_utf16_string(libregf_value_t *value,
uint16_t *utf16_string, size_t utf16_string_size,
libregf_error_t **error);
int
libregf_value_get_value_binary_data_size(libregf_value_t *value,
size_t *size, libregf_error_t **error);
int
libregf_value_get_value_binary_data(libregf_value_t *value,
uint8_t *binary_data, size_t size, libregf_error_t **error);
int
libregf_value_get_value_multi_string(libregf_value_t *value,
libregf_multi_string_t **multi_string, libregf_error_t **error);
π Multi string functions π
int
libregf_multi_string_free(libregf_multi_string_t **multi_string,
libregf_error_t **error);
int
libregf_multi_string_get_number_of_strings(libregf_multi_string_t *multi_string,
int *number_of_strings, libregf_error_t **error);
int
libregf_multi_string_get_utf8_string_size(libregf_multi_string_t *multi_string,
int string_index, size_t *utf8_string_size,
libregf_error_t **error);
int
libregf_multi_string_get_utf8_string(libregf_multi_string_t *multi_string,
int string_index, uint8_t *utf8_string, size_t utf8_string_size,
libregf_error_t **error);
int
libregf_multi_string_get_utf16_string_size(libregf_multi_string_t *multi_string,
int string_index, size_t *utf16_string_size,
libregf_error_t **error);
int
libregf_multi_string_get_utf16_string(libregf_multi_string_t *multi_string,
int string_index, uint16_t *utf16_string, size_t utf16_string_size,
libregf_error_t **error);
okay bestie breathe, that was the last of the prototypes, we're through the scary part π
β¨ DESCRIPTION β¨
The libregf_get_version() function is the girl. her whole job? handing you the library version. that's it. that's the function. no cap, she's lowkey the most wholesome thing in this whole header file πΈ
π«Ά RETURN VALUES π«Ά
okay so here's the vibe check on errors: most of the functions return NULL or -1 on error, and which one you get depends on the return type of the function you called. it's giving "read the room, then read the type" π
for the actual return values? yeah you're gonna have to go look at "libregf.h" β she's the main character of the truth here, not me π
π ENVIRONMENT π
None
nothing. nada. zero environment variables. she doesn't need the vibes from your shell, she's self-sufficient β¨
π¦ FILES π¦
None
no files. none. she's not reading your dotfiles, she's not judging your /tmp. iconic behaviour honestly π
π NOTES π
okay so here's a fun little fact about libregf β she can be compiled with wide character support (wchar_t). yes, wide. we love a broad spectrum queen π
so, like, if you want that:
- run
./configure --enable-wide-character-type=yes
or, alternatively, define:
_UNICODE
or:
UNICODE
...while you're compiling. either route works π«
and hey, if you ever need to figure out whether she was built with wide character support, look at LIBREGF_WIDE_CHARACTER_TYPE inside libregf/features.h. it's the little detective that tells you the truth π
π BUGS π
found a bug? bestie please tell the project, not just your group chat π report bugs of any kind on the project issue tracker:
https://github.com/libyal/libregf/issues
they want to hear it. fr fr π«Ά
π AUTHOR π
these man pages are generated from "libregf.h". yes, generated β she's not hand-written, she's born from the header. automation ate, honestly π₯
π COPYRIGHT π
Copyright (C) 2009-2024, Joachim Metz <joachim.metz@gmail.com>.
this is free software; see the source for copying conditions.
and listen, this part MATTERS: there is NO warranty β not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. zero. none. don't come crying to her, she told you upfront π
π SEE ALSO π
- the
libregf.hinclude file
iykyk, everything you could ever want lives in there π
and that's a wrap on the libregf(3) page π¦ this one's sourced from libregf and dated March 3, 2024 β go forth and read your registry data, you absolute legend, periodt ππ
π¦ where this page comes from
- debian trixie: libregf-dev 20240421-1+b1 Β· LGPL-3.0-or-later
- opensuse-leap 16.0: libregf-devel 20240421-bp160.1.12 Β· GFDL-1.3-or-later AND LGPL-3.0-or-later
- opensuse-leap 16.0: libregf-devel 20240421-bp160.1.12 Β· GFDL-1.3-or-later AND LGPL-3.0-or-later
- opensuse-leap 16.0: libregf-devel 20240421-bp160.1.12 Β· GFDL-1.3-or-later AND LGPL-3.0-or-later
- opensuse-leap 16.0: libregf-devel 20240421-bp160.1.12 Β· GFDL-1.3-or-later AND LGPL-3.0-or-later
- ubuntu questing: libregf-dev 20240421-1build1
- ubuntu resolute: libregf-dev 20240421-2build1 Β· LGPL-3.0-or-later
- ubuntu stonking: libregf-dev 20240421-2build1 Β· LGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms