2007-10-06 00:17:44 +00:00
/*
2004-04-04 16:24:08 +00:00
Unix SMB / CIFS implementation .
Registry interface
Copyright ( C ) Gerald Carter 2002.
2011-03-25 20:03:42 +01:00
Copyright ( C ) Jelmer Vernooij 2003 - 2007.
2007-10-06 00:17:44 +00:00
2004-04-04 16:24:08 +00:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-10 02:07:03 +00:00
the Free Software Foundation ; either version 3 of the License , or
2004-04-04 16:24:08 +00:00
( at your option ) any later version .
2007-10-06 00:17:44 +00:00
2004-04-04 16:24:08 +00:00
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
2007-10-06 00:17:44 +00:00
2004-04-04 16:24:08 +00:00
You should have received a copy of the GNU General Public License
2007-07-10 02:07:03 +00:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2004-04-04 16:24:08 +00:00
*/
# ifndef _REGISTRY_H /* _REGISTRY_H */
2007-10-06 00:17:44 +00:00
# define _REGISTRY_H
2004-04-04 16:24:08 +00:00
2007-08-26 15:16:40 +00:00
struct registry_context ;
2008-04-03 02:28:31 +02:00
struct loadparm_context ;
2007-08-26 15:16:40 +00:00
2007-08-30 23:15:12 +00:00
# include <talloc.h>
2008-04-02 13:59:48 +02:00
# include "libcli/util/werror.h"
2006-03-18 15:42:57 +00:00
# include "librpc/gen_ndr/security.h"
2007-09-23 21:35:03 +00:00
# include "libcli/util/ntstatus.h"
2008-10-11 21:31:42 +02:00
# include "../lib/util/time.h"
# include "../lib/util/data_blob.h"
2006-03-18 15:42:57 +00:00
2008-04-02 13:59:48 +02:00
/**
* The hive API . This API is generally used for
* reading a specific file that contains just one hive .
*
* Good examples are . DAT ( NTUSER . DAT ) files .
*
* This API does not have any notification support ( that
* should be provided by the registry implementation ) , nor
* does it understand what predefined keys are .
*/
struct hive_key {
const struct hive_operations * ops ;
} ;
struct hive_operations {
const char * name ;
/**
* Open a specific subkey
*/
WERROR ( * enum_key ) ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key , uint32_t idx ,
const char * * name ,
const char * * classname ,
NTTIME * last_mod_time ) ;
/**
* Open a subkey by name
*/
WERROR ( * get_key_by_name ) ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key , const char * name ,
struct hive_key * * subkey ) ;
/**
* Add a new key .
*/
WERROR ( * add_key ) ( TALLOC_CTX * ctx ,
2010-06-29 18:08:47 +02:00
const struct hive_key * parent_key , const char * path ,
2008-04-02 13:59:48 +02:00
const char * classname ,
struct security_descriptor * desc ,
struct hive_key * * key ) ;
/**
* Remove an existing key .
*/
2010-03-22 18:51:20 +01:00
WERROR ( * del_key ) ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key , const char * name ) ;
2008-04-02 13:59:48 +02:00
/**
* Force write of a key to disk .
*/
WERROR ( * flush_key ) ( struct hive_key * key ) ;
/**
* Retrieve a registry value with a specific index .
*/
WERROR ( * enum_value ) ( TALLOC_CTX * mem_ctx ,
2009-11-07 21:07:20 +01:00
struct hive_key * key , uint32_t idx ,
2008-04-02 13:59:48 +02:00
const char * * name , uint32_t * type ,
DATA_BLOB * data ) ;
/**
* Retrieve a registry value with the specified name
*/
WERROR ( * get_value_by_name ) ( TALLOC_CTX * mem_ctx ,
struct hive_key * key , const char * name ,
uint32_t * type , DATA_BLOB * data ) ;
/**
* Set a value on the specified registry key .
*/
WERROR ( * set_value ) ( struct hive_key * key , const char * name ,
uint32_t type , const DATA_BLOB data ) ;
/**
* Remove a value .
*/
2010-03-22 18:51:20 +01:00
WERROR ( * delete_value ) ( TALLOC_CTX * mem_ctx ,
struct hive_key * key , const char * name ) ;
2008-04-02 13:59:48 +02:00
/* Security Descriptors */
/**
* Change the security descriptor on a registry key .
*
* This should return WERR_NOT_SUPPORTED if the underlying
* format does not have a mechanism for storing
* security descriptors .
*/
WERROR ( * set_sec_desc ) ( struct hive_key * key ,
const struct security_descriptor * desc ) ;
/**
* Retrieve the security descriptor on a registry key .
*
* This should return WERR_NOT_SUPPORTED if the underlying
* format does not have a mechanism for storing
* security descriptors .
*/
WERROR ( * get_sec_desc ) ( TALLOC_CTX * ctx ,
const struct hive_key * key ,
struct security_descriptor * * desc ) ;
/**
* Retrieve general information about a key .
*/
WERROR ( * get_key_info ) ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key ,
const char * * classname ,
uint32_t * num_subkeys ,
uint32_t * num_values ,
NTTIME * last_change_time ,
uint32_t * max_subkeynamelen ,
uint32_t * max_valnamelen ,
uint32_t * max_valbufsize ) ;
} ;
struct cli_credentials ;
struct auth_session_info ;
2008-12-29 20:24:57 +01:00
struct tevent_context ;
2008-04-02 13:59:48 +02:00
WERROR reg_open_hive ( TALLOC_CTX * parent_ctx , const char * location ,
struct auth_session_info * session_info ,
struct cli_credentials * credentials ,
2008-12-29 20:24:57 +01:00
struct tevent_context * ev_ctx ,
2008-04-02 13:59:48 +02:00
struct loadparm_context * lp_ctx ,
struct hive_key * * root ) ;
WERROR hive_key_get_info ( TALLOC_CTX * mem_ctx , const struct hive_key * key ,
const char * * classname , uint32_t * num_subkeys ,
uint32_t * num_values , NTTIME * last_change_time ,
uint32_t * max_subkeynamelen ,
uint32_t * max_valnamelen , uint32_t * max_valbufsize ) ;
WERROR hive_key_add_name ( TALLOC_CTX * ctx , const struct hive_key * parent_key ,
const char * name , const char * classname ,
struct security_descriptor * desc ,
struct hive_key * * key ) ;
2010-03-22 18:51:20 +01:00
WERROR hive_key_del ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key , const char * name ) ;
2008-04-02 13:59:48 +02:00
WERROR hive_get_key_by_name ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key , const char * name ,
struct hive_key * * subkey ) ;
WERROR hive_enum_key ( TALLOC_CTX * mem_ctx ,
const struct hive_key * key , uint32_t idx ,
const char * * name ,
const char * * classname ,
NTTIME * last_mod_time ) ;
WERROR hive_key_set_value ( struct hive_key * key , const char * name ,
uint32_t type , const DATA_BLOB data ) ;
WERROR hive_get_value ( TALLOC_CTX * mem_ctx ,
struct hive_key * key , const char * name ,
uint32_t * type , DATA_BLOB * data ) ;
WERROR hive_get_value_by_index ( TALLOC_CTX * mem_ctx ,
struct hive_key * key , uint32_t idx ,
const char * * name ,
uint32_t * type , DATA_BLOB * data ) ;
2008-04-14 22:52:51 +02:00
WERROR hive_get_sec_desc ( TALLOC_CTX * mem_ctx ,
struct hive_key * key ,
struct security_descriptor * * security ) ;
WERROR hive_set_sec_desc ( struct hive_key * key ,
const struct security_descriptor * security ) ;
2008-04-02 13:59:48 +02:00
2010-03-22 18:51:20 +01:00
WERROR hive_key_del_value ( TALLOC_CTX * mem_ctx ,
struct hive_key * key , const char * name ) ;
2008-04-02 13:59:48 +02:00
WERROR hive_key_flush ( struct hive_key * key ) ;
/* Individual backends */
WERROR reg_open_directory ( TALLOC_CTX * parent_ctx ,
const char * location , struct hive_key * * key ) ;
WERROR reg_open_regf_file ( TALLOC_CTX * parent_ctx ,
2010-05-09 17:20:01 +02:00
const char * location , struct hive_key * * key ) ;
2008-04-02 13:59:48 +02:00
WERROR reg_open_ldb_file ( TALLOC_CTX * parent_ctx , const char * location ,
struct auth_session_info * session_info ,
struct cli_credentials * credentials ,
2008-12-29 20:24:57 +01:00
struct tevent_context * ev_ctx ,
2008-04-02 13:59:48 +02:00
struct loadparm_context * lp_ctx ,
struct hive_key * * k ) ;
WERROR reg_create_directory ( TALLOC_CTX * parent_ctx ,
const char * location , struct hive_key * * key ) ;
WERROR reg_create_regf_file ( TALLOC_CTX * parent_ctx ,
const char * location ,
int major_version ,
struct hive_key * * key ) ;
2004-12-11 17:12:16 +00:00
/* Handles for the predefined keys */
2007-10-06 00:17:44 +00:00
# define HKEY_CLASSES_ROOT 0x80000000
# define HKEY_CURRENT_USER 0x80000001
# define HKEY_LOCAL_MACHINE 0x80000002
# define HKEY_USERS 0x80000003
# define HKEY_PERFORMANCE_DATA 0x80000004
# define HKEY_CURRENT_CONFIG 0x80000005
# define HKEY_DYN_DATA 0x80000006
# define HKEY_PERFORMANCE_TEXT 0x80000050
# define HKEY_PERFORMANCE_NLSTEXT 0x80000060
2004-04-04 16:24:08 +00:00
2007-08-26 15:16:40 +00:00
# define HKEY_FIRST HKEY_CLASSES_ROOT
# define HKEY_LAST HKEY_PERFORMANCE_NLSTEXT
2006-04-30 16:09:00 +00:00
struct reg_predefined_key {
uint32_t handle ;
const char * name ;
} ;
extern const struct reg_predefined_key reg_predefined_keys [ ] ;
2006-04-24 16:16:43 +00:00
# define REG_DELETE -1
2004-04-04 16:24:08 +00:00
2004-09-22 12:32:31 +00:00
/*
* The general idea here is that every backend provides a ' hive ' . Combining
* various hives gives you a complete registry like windows has
*/
# define REGISTRY_INTERFACE_VERSION 1
2007-08-26 15:16:40 +00:00
struct reg_key_operations ;
2004-09-22 12:32:31 +00:00
/* structure to store the registry handles */
2007-10-06 00:17:44 +00:00
struct registry_key
2005-09-13 17:28:18 +00:00
{
2007-08-26 15:16:40 +00:00
struct registry_context * context ;
2004-09-22 12:32:31 +00:00
} ;
2007-10-06 00:17:44 +00:00
struct registry_value
2005-09-13 17:28:18 +00:00
{
2007-10-06 00:17:44 +00:00
const char * name ;
unsigned int data_type ;
DATA_BLOB data ;
2004-09-22 12:32:31 +00:00
} ;
/* FIXME */
2005-09-13 17:28:18 +00:00
typedef void ( * reg_key_notification_function ) ( void ) ;
typedef void ( * reg_value_notification_function ) ( void ) ;
2004-09-22 12:32:31 +00:00
2006-11-07 00:48:36 +00:00
struct cli_credentials ;
2007-08-26 15:16:40 +00:00
struct registry_operations {
2006-08-22 18:50:03 +00:00
const char * name ;
2005-09-29 11:51:06 +00:00
2007-08-26 15:16:40 +00:00
WERROR ( * get_key_info ) ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
const struct registry_key * key ,
const char * * classname ,
uint32_t * numsubkeys ,
uint32_t * numvalues ,
2008-01-07 14:11:29 -06:00
NTTIME * last_change_time ,
uint32_t * max_subkeynamelen ,
uint32_t * max_valnamelen ,
uint32_t * max_valbufsize ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * flush_key ) ( struct registry_key * key ) ;
2007-12-14 10:38:26 +01:00
WERROR ( * get_predefined_key ) ( struct registry_context * ctx ,
2007-10-06 00:17:44 +00:00
uint32_t key_id ,
struct registry_key * * key ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * open_key ) ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
struct registry_key * parent ,
const char * path ,
struct registry_key * * key ) ;
2007-08-26 15:16:40 +00:00
2007-10-06 00:17:44 +00:00
WERROR ( * create_key ) ( TALLOC_CTX * mem_ctx ,
struct registry_key * parent ,
const char * name ,
const char * key_class ,
struct security_descriptor * security ,
struct registry_key * * key ) ;
2007-08-26 15:16:40 +00:00
2010-03-22 18:51:20 +01:00
WERROR ( * delete_key ) ( TALLOC_CTX * mem_ctx ,
struct registry_key * key , const char * name ) ;
2007-08-26 15:16:40 +00:00
2010-03-22 18:51:20 +01:00
WERROR ( * delete_value ) ( TALLOC_CTX * mem_ctx ,
struct registry_key * key , const char * name ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * enum_key ) ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
const struct registry_key * key , uint32_t idx ,
const char * * name ,
const char * * keyclass ,
NTTIME * last_changed_time ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * enum_value ) ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
const struct registry_key * key , uint32_t idx ,
const char * * name ,
uint32_t * type ,
DATA_BLOB * data ) ;
2007-08-26 15:16:40 +00:00
2008-04-14 22:52:51 +02:00
WERROR ( * get_sec_desc ) ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
const struct registry_key * key ,
struct security_descriptor * * security ) ;
2007-08-26 15:16:40 +00:00
2008-04-14 22:52:51 +02:00
WERROR ( * set_sec_desc ) ( struct registry_key * key ,
2007-10-06 00:17:44 +00:00
const struct security_descriptor * security ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * load_key ) ( struct registry_key * key ,
2007-10-06 00:17:44 +00:00
const char * key_name ,
const char * path ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * unload_key ) ( struct registry_key * key , const char * name ) ;
WERROR ( * notify_value_change ) ( struct registry_key * key ,
2007-10-06 00:17:44 +00:00
reg_value_notification_function fn ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * get_value ) ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
const struct registry_key * key ,
const char * name ,
uint32_t * type ,
DATA_BLOB * data ) ;
2007-08-26 15:16:40 +00:00
WERROR ( * set_value ) ( struct registry_key * key ,
2007-10-06 00:17:44 +00:00
const char * name ,
uint32_t type ,
const DATA_BLOB data ) ;
} ;
2007-08-26 15:16:40 +00:00
/**
* Handle to a full registry
2007-10-06 00:17:44 +00:00
* contains zero or more hives
2007-08-26 15:16:40 +00:00
*/
struct registry_context {
const struct registry_operations * ops ;
2005-09-29 11:51:06 +00:00
} ;
2006-03-21 01:30:22 +00:00
struct auth_session_info ;
2008-12-29 20:24:57 +01:00
struct tevent_context ;
2007-12-02 22:32:11 +01:00
struct loadparm_context ;
2006-03-21 01:30:22 +00:00
2007-08-26 15:16:40 +00:00
/**
* Open the locally defined registry .
*/
2007-10-06 00:17:44 +00:00
WERROR reg_open_local ( TALLOC_CTX * mem_ctx ,
2008-04-16 01:32:54 +02:00
struct registry_context * * ctx ) ;
2007-03-13 20:08:44 +00:00
2007-10-06 00:17:44 +00:00
WERROR reg_open_samba ( TALLOC_CTX * mem_ctx ,
struct registry_context * * ctx ,
2008-12-29 20:24:57 +01:00
struct tevent_context * ev_ctx ,
2007-12-02 22:32:11 +01:00
struct loadparm_context * lp_ctx ,
2007-10-06 00:17:44 +00:00
struct auth_session_info * session_info ,
struct cli_credentials * credentials ) ;
2007-08-26 15:16:40 +00:00
/**
* Open the registry on a remote machine .
*/
2012-07-13 00:16:09 +02:00
WERROR reg_open_remote ( TALLOC_CTX * mem_ctx ,
struct registry_context * * ctx ,
2007-10-06 00:17:44 +00:00
struct auth_session_info * session_info ,
struct cli_credentials * credentials ,
2007-12-07 02:37:04 +01:00
struct loadparm_context * lp_ctx ,
2008-12-29 20:24:57 +01:00
const char * location , struct tevent_context * ev ) ;
2007-03-13 20:44:14 +00:00
2007-08-27 21:17:29 +00:00
WERROR reg_open_wine ( struct registry_context * * ctx , const char * path ) ;
2007-08-26 15:16:40 +00:00
2007-08-27 21:17:29 +00:00
const char * reg_get_predef_name ( uint32_t hkey ) ;
2007-10-06 00:17:44 +00:00
WERROR reg_get_predefined_key_by_name ( struct registry_context * ctx ,
const char * name ,
struct registry_key * * key ) ;
2007-12-14 10:38:26 +01:00
WERROR reg_get_predefined_key ( struct registry_context * ctx ,
2007-10-06 00:17:44 +00:00
uint32_t hkey ,
struct registry_key * * key ) ;
WERROR reg_open_key ( TALLOC_CTX * mem_ctx , struct registry_key * parent ,
const char * name , struct registry_key * * result ) ;
WERROR reg_key_get_value_by_index ( TALLOC_CTX * mem_ctx ,
const struct registry_key * key , uint32_t idx ,
const char * * name ,
uint32_t * type ,
DATA_BLOB * data ) ;
2007-08-27 21:17:29 +00:00
WERROR reg_key_get_info ( TALLOC_CTX * mem_ctx ,
2007-10-06 00:17:44 +00:00
const struct registry_key * key ,
const char * * class_name ,
uint32_t * num_subkeys ,
uint32_t * num_values ,
2008-01-07 14:11:29 -06:00
NTTIME * last_change_time ,
uint32_t * max_subkeynamelen ,
uint32_t * max_valnamelen ,
uint32_t * max_valbufsize ) ;
2007-10-06 00:17:44 +00:00
WERROR reg_key_get_subkey_by_index ( TALLOC_CTX * mem_ctx ,
const struct registry_key * key ,
2009-11-07 21:07:20 +01:00
uint32_t idx ,
2007-10-06 00:17:44 +00:00
const char * * name ,
const char * * classname ,
NTTIME * last_mod_time ) ;
WERROR reg_key_get_subkey_by_name ( TALLOC_CTX * mem_ctx ,
const struct registry_key * key ,
const char * name ,
struct registry_key * * subkey ) ;
WERROR reg_key_get_value_by_name ( TALLOC_CTX * mem_ctx ,
const struct registry_key * key ,
const char * name ,
uint32_t * type ,
DATA_BLOB * data ) ;
2010-03-22 18:51:20 +01:00
WERROR reg_key_del ( TALLOC_CTX * mem_ctx ,
struct registry_key * parent , const char * name ) ;
2007-10-06 00:17:44 +00:00
WERROR reg_key_add_name ( TALLOC_CTX * mem_ctx ,
struct registry_key * parent , const char * name ,
const char * classname ,
struct security_descriptor * desc ,
struct registry_key * * newkey ) ;
WERROR reg_val_set ( struct registry_key * key , const char * value ,
uint32_t type , DATA_BLOB data ) ;
WERROR reg_get_sec_desc ( TALLOC_CTX * ctx , const struct registry_key * key ,
struct security_descriptor * * secdesc ) ;
2010-03-22 18:51:20 +01:00
WERROR reg_del_value ( TALLOC_CTX * mem_ctx ,
struct registry_key * key , const char * valname ) ;
2007-08-27 21:17:29 +00:00
WERROR reg_key_flush ( struct registry_key * key ) ;
2007-10-06 00:17:44 +00:00
WERROR reg_create_key ( TALLOC_CTX * mem_ctx ,
struct registry_key * parent ,
const char * name ,
const char * key_class ,
struct security_descriptor * security ,
struct registry_key * * key ) ;
2007-03-13 20:08:44 +00:00
2007-08-26 15:16:40 +00:00
/* Utility functions */
2007-08-27 21:17:29 +00:00
const char * str_regtype ( int type ) ;
2010-05-09 17:20:01 +02:00
bool push_reg_sz ( TALLOC_CTX * mem_ctx , DATA_BLOB * blob , const char * s ) ;
bool push_reg_multi_sz ( TALLOC_CTX * mem_ctx , DATA_BLOB * blob , const char * * a ) ;
bool pull_reg_sz ( TALLOC_CTX * mem_ctx , const DATA_BLOB * blob , const char * * s ) ;
bool pull_reg_multi_sz ( TALLOC_CTX * mem_ctx , const DATA_BLOB * blob , const char * * * a ) ;
2010-04-27 16:37:56 +02:00
int regtype_by_string ( const char * str ) ;
2010-05-09 17:20:01 +02:00
char * reg_val_data_string ( TALLOC_CTX * mem_ctx , uint32_t type , const DATA_BLOB data ) ;
char * reg_val_description ( TALLOC_CTX * mem_ctx , const char * name ,
2007-10-06 00:17:44 +00:00
uint32_t type , const DATA_BLOB data ) ;
2010-05-09 17:20:01 +02:00
bool reg_string_to_val ( TALLOC_CTX * mem_ctx , const char * type_str ,
2007-10-06 00:17:44 +00:00
const char * data_str , uint32_t * type , DATA_BLOB * data ) ;
WERROR reg_open_key_abs ( TALLOC_CTX * mem_ctx , struct registry_context * handle ,
const char * name , struct registry_key * * result ) ;
2010-03-28 16:12:22 +02:00
WERROR reg_key_del_abs ( struct registry_context * ctx , const char * path ) ;
2007-10-06 00:17:44 +00:00
WERROR reg_key_add_abs ( TALLOC_CTX * mem_ctx , struct registry_context * ctx ,
const char * path , uint32_t access_mask ,
struct security_descriptor * sec_desc ,
struct registry_key * * result ) ;
WERROR reg_load_key ( struct registry_context * ctx , struct registry_key * key ,
const char * name , const char * filename ) ;
WERROR reg_mount_hive ( struct registry_context * rctx ,
struct hive_key * hive_key ,
uint32_t key_id ,
const char * * elements ) ;
2007-03-13 20:08:44 +00:00
2007-08-26 15:16:40 +00:00
struct registry_key * reg_import_hive_key ( struct registry_context * ctx ,
2007-10-06 00:17:44 +00:00
struct hive_key * hive ,
uint32_t predef_key ,
const char * * elements ) ;
2008-04-14 22:52:51 +02:00
WERROR reg_set_sec_desc ( struct registry_key * key ,
const struct security_descriptor * security ) ;
2005-12-27 21:11:09 +00:00
2008-04-02 13:58:05 +02:00
struct reg_diff_callbacks {
WERROR ( * add_key ) ( void * callback_data , const char * key_name ) ;
WERROR ( * set_value ) ( void * callback_data , const char * key_name ,
const char * value_name , uint32_t value_type ,
DATA_BLOB value ) ;
WERROR ( * del_value ) ( void * callback_data , const char * key_name ,
const char * value_name ) ;
WERROR ( * del_key ) ( void * callback_data , const char * key_name ) ;
WERROR ( * del_all_values ) ( void * callback_data , const char * key_name ) ;
WERROR ( * done ) ( void * callback_data ) ;
} ;
2008-10-24 14:57:03 +02:00
WERROR reg_diff_apply ( struct registry_context * ctx ,
2010-05-09 17:20:01 +02:00
const char * filename ) ;
2008-04-02 13:58:05 +02:00
WERROR reg_generate_diff ( struct registry_context * ctx1 ,
struct registry_context * ctx2 ,
const struct reg_diff_callbacks * callbacks ,
void * callback_data ) ;
WERROR reg_dotreg_diff_save ( TALLOC_CTX * ctx , const char * filename ,
struct reg_diff_callbacks * * callbacks ,
void * * callback_data ) ;
2008-04-14 22:52:51 +02:00
WERROR reg_preg_diff_save ( TALLOC_CTX * ctx , const char * filename ,
struct reg_diff_callbacks * * callbacks ,
void * * callback_data ) ;
2008-04-02 13:58:05 +02:00
WERROR reg_generate_diff_key ( struct registry_key * oldkey ,
struct registry_key * newkey ,
const char * path ,
const struct reg_diff_callbacks * callbacks ,
void * callback_data ) ;
2008-04-15 11:52:33 +02:00
WERROR reg_diff_load ( const char * filename ,
const struct reg_diff_callbacks * callbacks ,
void * callback_data ) ;
2008-04-02 13:58:05 +02:00
2008-10-20 18:59:51 +02:00
WERROR reg_dotreg_diff_load ( int fd ,
const struct reg_diff_callbacks * callbacks ,
void * callback_data ) ;
WERROR reg_preg_diff_load ( int fd ,
const struct reg_diff_callbacks * callbacks ,
void * callback_data ) ;
WERROR local_get_predefined_key ( struct registry_context * ctx ,
uint32_t key_id , struct registry_key * * key ) ;
2008-04-02 13:58:05 +02:00
2007-03-13 20:44:14 +00:00
2004-04-04 16:24:08 +00:00
# endif /* _REGISTRY_H */