Понятия не имею, полезно ли это, но я обнаружил, что для каждой службы есть возможность добавлять переменные среды непосредственно в службу.
Это делается через реестр.
Скажите, что ключ к вашим услугам ...
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 в глобальную среду. Вы можете сделать их целевыми и уникальными, если у вас их больше одного.
С уважением,
Ричард.
person
Richard Quadling
schedule
28.04.2010