データ構造 | |
struct | reg_dyn_values |
関数 | |
static int | netlogon_params (REGVAL_CTR *regvals) |
static int | prod_options (REGVAL_CTR *regvals) |
static int | tcpip_params (REGVAL_CTR *regvals) |
static int | perflib_params (REGVAL_CTR *regvals) |
static int | perflib_009_params (REGVAL_CTR *regvals) |
static int | hkpt_params (REGVAL_CTR *regvals) |
static int | current_version (REGVAL_CTR *values) |
int | fetch_dynamic_reg_values (REGISTRY_KEY *key, REGVAL_CTR *val) |
BOOL | check_dynamic_reg_values (REGISTRY_KEY *key) |
変数 | |
static struct reg_dyn_values | dynamic_values [] |
static int netlogon_params | ( | REGVAL_CTR * | regvals | ) | [static] |
reg_dynamic.c の 36 行で定義されています。
参照先 pdb_get_account_policy()・regval_ctr_addvalue()・regval_ctr_numvals().
00037 { 00038 uint32 dwValue; 00039 00040 if ( !pdb_get_account_policy(AP_REFUSE_MACHINE_PW_CHANGE, &dwValue) ) 00041 dwValue = 0; 00042 00043 regval_ctr_addvalue( regvals, "RefusePasswordChange", REG_DWORD, 00044 (char*)&dwValue, sizeof(dwValue) ); 00045 00046 return regval_ctr_numvals( regvals ); 00047 }
static int prod_options | ( | REGVAL_CTR * | regvals | ) | [static] |
reg_dynamic.c の 52 行で定義されています。
参照先 push_ucs2()・regval_ctr_addvalue()・regval_ctr_numvals()・ROLE_DOMAIN_BDC・ROLE_DOMAIN_MEMBER・ROLE_DOMAIN_PDC・ROLE_STANDALONE.
00053 { 00054 const char *value_ascii = ""; 00055 fstring value; 00056 int value_length; 00057 00058 switch (lp_server_role()) { 00059 case ROLE_DOMAIN_PDC: 00060 case ROLE_DOMAIN_BDC: 00061 value_ascii = "LanmanNT"; 00062 break; 00063 case ROLE_STANDALONE: 00064 value_ascii = "ServerNT"; 00065 break; 00066 case ROLE_DOMAIN_MEMBER: 00067 value_ascii = "WinNT"; 00068 break; 00069 } 00070 00071 value_length = push_ucs2( value, value, value_ascii, sizeof(value), 00072 STR_TERMINATE|STR_NOALIGN ); 00073 regval_ctr_addvalue( regvals, "ProductType", REG_SZ, value, 00074 value_length ); 00075 00076 return regval_ctr_numvals( regvals ); 00077 }
static int tcpip_params | ( | REGVAL_CTR * | regvals | ) | [static] |
reg_dynamic.c の 82 行で定義されています。
参照先 get_mydnsdomname()・myhostname()・push_ucs2()・regval_ctr_addvalue()・regval_ctr_numvals().
00083 { 00084 fstring value; 00085 int value_length; 00086 char *hname; 00087 fstring mydomainname; 00088 00089 00090 hname = myhostname(); 00091 value_length = push_ucs2( value, value, hname, sizeof(value), STR_TERMINATE|STR_NOALIGN); 00092 regval_ctr_addvalue( regvals, "Hostname",REG_SZ, value, value_length ); 00093 00094 get_mydnsdomname( mydomainname ); 00095 value_length = push_ucs2( value, value, mydomainname, sizeof(value), STR_TERMINATE|STR_NOALIGN); 00096 regval_ctr_addvalue( regvals, "Domain", REG_SZ, value, value_length ); 00097 00098 return regval_ctr_numvals( regvals ); 00099 }
static int perflib_params | ( | REGVAL_CTR * | regvals | ) | [static] |
reg_dynamic.c の 104 行で定義されています。
参照先 reg_perfcount_get_base_index()・reg_perfcount_get_last_counter()・reg_perfcount_get_last_help()・regval_ctr_addvalue()・regval_ctr_numvals().
00105 { 00106 int base_index = -1; 00107 int last_counter = -1; 00108 int last_help = -1; 00109 int version = 0x00010001; 00110 00111 base_index = reg_perfcount_get_base_index(); 00112 regval_ctr_addvalue(regvals, "Base Index", REG_DWORD, (char *)&base_index, sizeof(base_index)); 00113 last_counter = reg_perfcount_get_last_counter(base_index); 00114 regval_ctr_addvalue(regvals, "Last Counter", REG_DWORD, (char *)&last_counter, sizeof(last_counter)); 00115 last_help = reg_perfcount_get_last_help(last_counter); 00116 regval_ctr_addvalue(regvals, "Last Help", REG_DWORD, (char *)&last_help, sizeof(last_help)); 00117 regval_ctr_addvalue(regvals, "Version", REG_DWORD, (char *)&version, sizeof(version)); 00118 00119 return regval_ctr_numvals( regvals ); 00120 }
static int perflib_009_params | ( | REGVAL_CTR * | regvals | ) | [static] |
reg_dynamic.c の 125 行で定義されています。
参照先 reg_perfcount_get_base_index()・reg_perfcount_get_counter_help()・reg_perfcount_get_counter_names()・regval_ctr_addvalue()・regval_ctr_numvals().
00126 { 00127 int base_index; 00128 int buffer_size; 00129 char *buffer = NULL; 00130 00131 base_index = reg_perfcount_get_base_index(); 00132 buffer_size = reg_perfcount_get_counter_names(base_index, &buffer); 00133 regval_ctr_addvalue(regvals, "Counter", REG_MULTI_SZ, buffer, buffer_size); 00134 if(buffer_size > 0) 00135 SAFE_FREE(buffer); 00136 buffer_size = reg_perfcount_get_counter_help(base_index, &buffer); 00137 regval_ctr_addvalue(regvals, "Help", REG_MULTI_SZ, buffer, buffer_size); 00138 if(buffer_size > 0) 00139 SAFE_FREE(buffer); 00140 00141 return regval_ctr_numvals( regvals ); 00142 }
static int hkpt_params | ( | REGVAL_CTR * | regvals | ) | [static] |
reg_dynamic.c の 147 行で定義されています。
参照先 reg_perfcount_get_base_index()・reg_perfcount_get_counter_help()・reg_perfcount_get_counter_names()・regval_ctr_addvalue()・regval_ctr_numvals().
00148 { 00149 uint32 base_index; 00150 uint32 buffer_size; 00151 char *buffer = NULL; 00152 00153 /* This is ALMOST the same as perflib_009_params, but HKPT has 00154 a "Counters" entry instead of a "Counter" key. <Grrrr> */ 00155 00156 base_index = reg_perfcount_get_base_index(); 00157 buffer_size = reg_perfcount_get_counter_names(base_index, &buffer); 00158 regval_ctr_addvalue(regvals, "Counters", REG_MULTI_SZ, buffer, buffer_size); 00159 00160 if(buffer_size > 0) 00161 SAFE_FREE(buffer); 00162 00163 buffer_size = reg_perfcount_get_counter_help(base_index, &buffer); 00164 regval_ctr_addvalue(regvals, "Help", REG_MULTI_SZ, buffer, buffer_size); 00165 if(buffer_size > 0) 00166 SAFE_FREE(buffer); 00167 00168 return regval_ctr_numvals( regvals ); 00169 }
static int current_version | ( | REGVAL_CTR * | values | ) | [static] |
reg_dynamic.c の 174 行で定義されています。
参照先 fstr_sprintf()・push_ucs2()・regval_ctr_addvalue()・regval_ctr_numvals()・values.
00175 { 00176 const char *sysroot_string = "c:\\Windows"; 00177 fstring sysversion; 00178 fstring value; 00179 uint32 value_length; 00180 00181 value_length = push_ucs2( value, value, sysroot_string, sizeof(value), 00182 STR_TERMINATE|STR_NOALIGN ); 00183 regval_ctr_addvalue( values, "SystemRoot", REG_SZ, value, value_length ); 00184 00185 fstr_sprintf( sysversion, "%d.%d", lp_major_announce_version(), lp_minor_announce_version() ); 00186 value_length = push_ucs2( value, value, sysversion, sizeof(value), 00187 STR_TERMINATE|STR_NOALIGN ); 00188 regval_ctr_addvalue( values, "CurrentVersion", REG_SZ, value, value_length ); 00189 00190 00191 return regval_ctr_numvals( values ); 00192 }
int fetch_dynamic_reg_values | ( | REGISTRY_KEY * | key, | |
REGVAL_CTR * | val | |||
) |
reg_dynamic.c の 214 行で定義されています。
参照先 dynamic_values・reg_dyn_values::fetch_values・_RegistryKey::name・normalize_reg_path()・reg_dyn_values::path.
参照元 fetch_reg_values().
00215 { 00216 int i; 00217 pstring path; 00218 00219 pstrcpy( path, key->name ); 00220 normalize_reg_path( path ); 00221 00222 for ( i=0; dynamic_values[i].path; i++ ) { 00223 if ( strcmp( path, dynamic_values[i].path ) == 0 ) 00224 return dynamic_values[i].fetch_values( val ); 00225 } 00226 00227 return -1; 00228 }
BOOL check_dynamic_reg_values | ( | REGISTRY_KEY * | key | ) |
reg_dynamic.c の 233 行で定義されています。
参照先 dynamic_values・_RegistryKey::name・normalize_reg_path()・reg_dyn_values::path.
参照元 store_reg_values().
00234 { 00235 int i; 00236 pstring path; 00237 00238 pstrcpy( path, key->name ); 00239 normalize_reg_path( path ); 00240 00241 for ( i=0; dynamic_values[i].path; i++ ) { 00242 /* can't write to dynamic keys */ 00243 if ( strcmp( path, dynamic_values[i].path ) == 0 ) 00244 return True; 00245 } 00246 00247 return False; 00248 }
struct reg_dyn_values dynamic_values[] [static] |
初期値:
{ { "HKLM/SYSTEM/CURRENTCONTROLSET/SERVICES/NETLOGON/PARAMETERS", &netlogon_params }, { "HKLM/SYSTEM/CURRENTCONTROLSET/CONTROL/PRODUCTOPTIONS", &prod_options }, { "HKLM/SYSTEM/CURRENTCONTROLSET/SERVICES/TCPIP/PARAMETERS", &tcpip_params }, { "HKLM/SOFTWARE/MICROSOFT/WINDOWS NT/CURRENTVERSION/PERFLIB", &perflib_params }, { "HKLM/SOFTWARE/MICROSOFT/WINDOWS NT/CURRENTVERSION/PERFLIB/009", &perflib_009_params }, { "HKLM/SOFTWARE/MICROSOFT/WINDOWS NT/CURRENTVERSION", ¤t_version }, { "HKPT", &hkpt_params }, { NULL, NULL } }
reg_dynamic.c の 200 行で定義されています。