Назад | Перейти на главную страницу

невозможно изменить переменную среды с помощью setenv ()

У меня есть рядовой сервер с Windows PDC с активным каталогом. Безопасность = реклама.

Я пытаюсь установить переменную среды (кеш учетных данных) с помощью C:

setenv ("CCACHE", "имя_кэша", 1);

Однако, когда я делаю getenv («CCACHE»), он по-прежнему показывает старое значение переменной. Может кто-то помочь мне с этим?

EDIT: я в основном пытаюсь установить ccache для аутентификации Kerberos. Вызов fn const char * krb5_cc_default_name (krb5_context context) по-прежнему возвращает старое значение для кеша.

According to MIT kerberos documentation,

Имя кэша учетных данных по умолчанию кэшируется в контексте между вызовами этой функции, поэтому, если значение KRB5CCNAME изменится в среде процесса после первого вызова этой функции, это изменение не будет отражено в последующих вызовах с тем же контекстом. Вызывающий может вызвать krb5_cc_set_default_name () со значением NULL в имени, чтобы очистить кешированное значение и принудительно пересчитать имя по умолчанию.

Я пробовал это, но он по-прежнему возвращает старое значение.

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

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

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