Пример #1
0
/**
 * Checks the registry for configuration file location
 *
 * Kerberos for Windows and other legacy Kerberos applications expect
 * to find the configuration file location in the
 * SOFTWARE\MIT\Kerberos registry key under the value "config".
 */
KRB5_LIB_FUNCTION char * KRB5_LIB_CALL
_krb5_get_default_config_config_files_from_registry()
{
    static const char * KeyName = "Software\\MIT\\Kerberos";
    char *config_file = NULL;
    LONG rcode;
    HKEY key;

    rcode = RegOpenKeyEx(HKEY_CURRENT_USER, KeyName, 0, KEY_READ, &key);
    if (rcode == ERROR_SUCCESS) {
        config_file = _krb5_parse_reg_value_as_multi_string(NULL, key, "config",
                                                            REG_NONE, 0, PATH_SEP);
        RegCloseKey(key);
    }

    if (config_file)
        return config_file;

    rcode = RegOpenKeyEx(HKEY_LOCAL_MACHINE, KeyName, 0, KEY_READ, &key);
    if (rcode == ERROR_SUCCESS) {
        config_file = _krb5_parse_reg_value_as_multi_string(NULL, key, "config",
                                                            REG_NONE, 0, PATH_SEP);
        RegCloseKey(key);
    }

    return config_file;
}
Пример #2
0
/**
 * Parse a registry value as a string
 *
 * @see _krb5_parse_reg_value_as_multi_string()
 */
char *
_krb5_parse_reg_value_as_string(krb5_context context,
                                HKEY key, const char * valuename,
                                DWORD type, DWORD cb_data)
{
    return _krb5_parse_reg_value_as_multi_string(context, key, valuename,
                                                 type, cb_data, " ");
}