Понятия не имею, полезно ли это, но я обнаружил, что для каждого сервиса есть возможность добавлять переменные среды непосредственно в сервис.
Это делается через реестр.
Скажи, что ключом к твоему обслуживанию является ...
HKLM \ SYSTEM \ CurrentControlSet \ Services \ YourService
Создайте REG_MULTI_SZ с именем Environment.
Теперь вы можете добавлять записи, как ...
Var1=Value1
Var2=Value2
и они будут доступны для сервисного кода.
Если вы используете Windows Resource ToolKit для установки сценариев как службы (instsrv.exe и srvany.exe), то, опять же, у вас есть возможность установить переменные среды для службы, но, скорее всего, это неправильно один, как это было бы для srvany.exe.
Вместо этого вы используете ключ ...
HKLM \ SYSTEM \ CurrentControlSet \ Services \ YourService \ Parameters
и создайте REG_MULTI_SZ с именем AppEnvironment
Установите записи таким же образом.
А теперь у вашей службы сценариев есть собственные переменные окружения.
Я использую эти методы с PHP + WinCache, чтобы позволить мне установить APP_POOL_ID, уникальный для каждого сервиса, который позволяет WinCache совместно использовать центральный кеш (на основе APP_POOL_ID) для всех «потоков» (используя WShell для запуска неблокирования дочерние "потоки" и все еще используют тот же WinCache, что и модуль запуска, что позволяет упростить взаимодействие между процессами).
Во всяком случае. Надеюсь, это поможет.
Я думаю, что в основном вы не добавляете ненужные env_vars в глобальную среду. Вы можете сохранить их целевые и уникальные, если их больше 1.
С уважением,
Ричард.