Переменные среды - это просто блок данных, которые передаются окнами процессу при его запуске.Используемые вами функции времени выполнения (BCL для System.Environment и CRT для getenv), вероятно, делают копии среды во время запуска, что означает, что они не работают с теми же переменными «среды».
Концептуальноони должны сделать это, потому что в противном случае должен был бы быть какой-то способ синхронизации их доступа к среде.