Невозможно изменить переменную окружения с помощью setenv()
У меня есть рядовой сервер с Windows PDC с активным каталогом. Безопасность = объявления.
Я пытаюсь установить переменную среды (учетный кеш) с помощью C:
SetEnv("CCache","cache_name",1);
Тем не менее, когда я делаю getenv("CCACHE"), он по-прежнему показывает старое значение переменной. Может кто-то помочь мне с этим?
РЕДАКТИРОВАТЬ: я в основном пытаюсь установить ccache для аутентификации Kerberos. Вызов fn const char * krb5_cc_default_name(контекст krb5_context) по-прежнему возвращает старое значение для кэша.
According to MIT kerberos documentation,
Имя кэша учетных данных по умолчанию кэшируется в контексте между вызовами этой функции, поэтому, если значение KRB5CCNAME изменяется в среде процесса после первого вызова этой функции, это изменение не будет отражено в последующих вызовах с тем же контекстом. Вызывающая сторона может вызвать krb5_cc_set_default_name() со значением NULL name, чтобы очистить кэшированное значение и принудительно пересчитать имя по умолчанию.
Я пробовал это, но он все еще возвращает старое значение.
1 ответ
Из другого потока: переменные окружения устанавливаются в контексте вашей программы.
Когда ваша программа завершает работу, вы возвращаетесь в контекст, откуда она была запущена.
смотрите эту ветку ->. Этот поток также охватывает другие ситуации, например, различные процессы в одной программе.