Невозможно изменить переменную окружения с помощью 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 ответ

Из другого потока: переменные окружения устанавливаются в контексте вашей программы.

Когда ваша программа завершает работу, вы возвращаетесь в контекст, откуда она была запущена.

смотрите эту ветку ->. Этот поток также охватывает другие ситуации, например, различные процессы в одной программе.

Другие вопросы по тегам