📄 registry.i
字号:
/* Unix SMB/CIFS implementation. Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007 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 the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 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. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.*/%define DOCSTRING"Access to various registry formats and the Samba registry."%enddef%module(docstring=DOCSTRING) registry%{/* Include headers */#include <stdint.h>#include <stdbool.h>#include "includes.h"#include "registry.h"#include "param/param.h"#include "events/events.h"typedef struct registry_context reg;typedef struct hive_key hive_key;%}/* FIXME: This should be in another file */%typemap(default,noblock=1) struct auth_session_info * { $1 = NULL; }%import "stdint.i"%import "../../lib/talloc/talloc.i"%import "../../auth/credentials/credentials.i"%import "../../libcli/util/errors.i"%import "../../param/param.i"%import "../events/events.i"/* Utility functions */const char *reg_get_predef_name(uint32_t hkey);const char *str_regtype(int type);/* Registry contexts */%typemap(in,noblock=1,numinputs=0) struct registry_context ** (struct registry_context *tmp) { $1 = &tmp; }%typemap(argout,noblock=1) struct registry_context ** { $result = SWIG_NewPointerObj(*$1, SWIGTYPE_p_registry_context, 0);}%rename(Registry) reg_open_local;WERROR reg_open_local(TALLOC_CTX *parent_ctx, struct registry_context **ctx);%typemap(in,noblock=1) const char ** { /* Check if is a list */ if (PyList_Check($input)) { int size = PyList_Size($input); int i = 0; $1 = (char **) malloc((size+1)*sizeof(const char *)); for (i = 0; i < size; i++) { PyObject *o = PyList_GetItem($input,i); if (PyString_Check(o)) $1[i] = PyString_AsString(PyList_GetItem($input,i)); else { PyErr_SetString(PyExc_TypeError,"list must contain strings"); free($1); return NULL; } } $1[i] = 0; } else { PyErr_SetString(PyExc_TypeError,"not a list"); return NULL; }}%typemap(freearg,noblock=1) const char ** { free((char **) $1);}%talloctype(reg);typedef struct registry_context { %extend { %feature("docstring") get_predefined_key_by_name "S.get_predefined_key_by_name(name) -> key\n" "Find a predefined key by name"; WERROR get_predefined_key_by_name(const char *name, struct registry_key **key); %feature("docstring") key_del_abs "S.key_del_abs(name) -> None\n" "Delete a key by absolute path."; WERROR key_del_abs(const char *path); %feature("docstring") get_predefined_key "S.get_predefined_key(hkey_id) -> key\n" "Find a predefined key by id"; WERROR get_predefined_key(uint32_t hkey_id, struct registry_key **key); %feature("docstring") diff_apply "S.diff_apply(filename) -> None\n" "Apply the diff from the specified file"; WERROR diff_apply(const char *filename); WERROR generate_diff(struct registry_context *ctx2, const struct reg_diff_callbacks *callbacks, void *callback_data); WERROR mount_hive(struct hive_key *key, uint32_t hkey_id, const char **elements=NULL); struct registry_key *import_hive_key(struct hive_key *hive, uint32_t predef_key, const char **elements); %feature("docstring") mount_hive "S.mount_hive(key, predef_name) -> None\n" "Mount the specified key at the specified path."; WERROR mount_hive(struct hive_key *key, const char *predef_name) { int i; for (i = 0; reg_predefined_keys[i].name; i++) { if (!strcasecmp(reg_predefined_keys[i].name, predef_name)) return reg_mount_hive($self, key, reg_predefined_keys[i].handle, NULL); } return WERR_INVALID_NAME; } }} reg;/* Hives */%typemap(in,noblock=1,numinputs=0) struct hive_key ** (struct hive_key *tmp) { $1 = &tmp; }%typemap(argout,noblock=1) struct hive_key ** { Py_XDECREF($result); $result = SWIG_NewPointerObj(*$1, SWIGTYPE_p_hive_key, 0);}%feature("docstring") reg_open_hive "S.__init__(location, session_info=None, credentials=None, loadparm_context=None)";%rename(hive_key) reg_open_hive;WERROR reg_open_hive(TALLOC_CTX *parent_ctx, const char *location, struct auth_session_info *session_info, struct cli_credentials *credentials, struct event_context *ev_ctx, struct loadparm_context *lp_ctx, struct hive_key **root);%feature("docstring") reg_open_ldb_file "open_ldb(location, session_info=None, credentials=None, loadparm_context=None) -> key";%rename(open_ldb) reg_open_ldb_file;WERROR reg_open_ldb_file(TALLOC_CTX *parent_ctx, const char *location, struct auth_session_info *session_info, struct cli_credentials *credentials, struct event_context *ev_ctx, struct loadparm_context *lp_ctx, struct hive_key **k);%feature("docstring") reg_create_directory "create_dir(location) -> key";%rename(create_dir) reg_create_directory;WERROR reg_create_directory(TALLOC_CTX *parent_ctx, const char *location, struct hive_key **key);%feature("docstring") reg_open_directory "open_dir(location) -> key";%rename(open_dir) reg_open_directory;WERROR reg_open_directory(TALLOC_CTX *parent_ctx, const char *location, struct hive_key **key);%talloctype(hive_key);typedef struct hive_key { %extend { %feature("docstring") del "S.del(name) -> None\n" "Delete a subkey"; WERROR del(const char *name); %feature("docstring") flush "S.flush() -> None\n" "Flush this key to disk"; WERROR flush(void); %feature("docstring") del_value "S.del_value(name) -> None\n" "Delete a value"; WERROR del_value(const char *name); %feature("docstring") set_value "S.set_value(name, type, data) -> None\n" "Set a value"; WERROR set_value(const char *name, uint32_t type, const DATA_BLOB data); }} hive_key;%rename(open_samba) reg_open_samba;%feature("docstring") reg_open_samba "open_samba() -> reg";WERROR reg_open_samba(TALLOC_CTX *mem_ctx, struct registry_context **ctx, struct event_context *ev_ctx, struct loadparm_context *lp_ctx, struct auth_session_info *session_info, struct cli_credentials *credentials);/* Constants */%constant uint32_t HKEY_CLASSES_ROOT = HKEY_CLASSES_ROOT;%constant uint32_t HKEY_CURRENT_USER = HKEY_CURRENT_USER;%constant uint32_t HKEY_LOCAL_MACHINE = HKEY_LOCAL_MACHINE;%constant uint32_t HKEY_USERS = HKEY_USERS;%constant uint32_t HKEY_PERFORMANCE_DATA = HKEY_PERFORMANCE_DATA;%constant uint32_t HKEY_CURRENT_CONFIG = HKEY_CURRENT_CONFIG;%constant uint32_t HKEY_DYN_DATA = HKEY_DYN_DATA;%constant uint32_t HKEY_PERFORMANCE_TEXT = HKEY_PERFORMANCE_TEXT;%constant uint32_t HKEY_PERFORMANCE_NLSTEXT = HKEY_PERFORMANCE_NLSTEXT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -