これが役立つかどうかはわかりませんが、すべてのサービスについて、環境変数をサービスに直接追加するオプションがあることがわかりました。
これは、レジストリを介して行われます。
あなたのサービスの鍵は...
HKLM\SYSTEM\CurrentControlSet\Services\YourService
Environment という名前の REG_MULTI_SZ を作成します。
これで、次のようなエントリを追加できます...
Var1=Value1
Var2=Value2
これらはサービス コードで使用できます。
Windows Resource ToolKit を使用してスクリプトをサービス (instsrv.exe および srvany.exe) としてインストールする場合も、サービスの環境変数を設定するオプションがありますが、ほとんどの場合、これらの環境変数は間違っています。 srvany.exe 用です。
代わりに、キーを使用します...
HKLM\SYSTEM\CurrentControlSet\Services\YourService\Parameters
AppEnvironment という REG_MULTI_SZ を作成します。
同様にエントリを設定します。
これで、スクリプト サービスに独自の環境変数が追加されました。
私は PHP+WinCache でこれらの手法を使用して、各サービスに固有の APP_POOL_ID を設定できるようにしています。これにより、WinCache はすべての「スレッド」の中央キャッシュ (APP_POOL_ID に基づく) を共有できます (WShell を使用してノンブロッキングの子スレッドを起動します)。 " ランチャーと同じ WinCache を共有し、単純化されたプロセス間通信を可能にします)。
ともかく。これが多少役立つことを願っています。
主に、不要な env_vars をグローバル環境に追加していないと思います。複数ある場合は、ターゲットを絞って一意に保つことができます。
よろしく、
リチャード。