Как установить переменную среды TEMP для пользователя «Сетевая служба»?

Как установить переменную среды TEMP для пользователя «Сетевая служба»?

У нас есть система, которая довольно часто использует вызовы Path.GetTempFile и Path.GetTempPath для работы с временными файлами. Эта система также работает как пользователь "Network Service". Мы обнаружили, что у нас заканчивается место на диске C (для других проблем наши временные файлы очищаются правильно) и хотели бы иметь возможность переместить временный каталог на другой диск.

Самым простым решением этой проблемы, похоже, является изменение переменных окружения TMP или TEMP для пользователя Network Service, но мне, похоже, удается задать только своего собственного пользователя или «системные» переменные, которые перезаписываются профилем пользователя Network Service. Как мне задать эти переменные для пользователя Network Service?

решение1

На самом деле это довольно сложно. Вы можете использовать setxкоманду для установки постоянных переменных среды для других пользователей, но это не сработает для NetworkService, поскольку учетные записи службы не имеют паролей (поэтому ваши учетные данные всегда будут отклонены).

Единственный известный мне способ сделать это — использовать планировщик задач:

  1. Настройте задачу для запуска от имени пользователя «сетевая служба».
  2. Оставьте триггеры пустыми.
  3. Для действия запустите его cmd.exeс параметрами /c setx temp [target].
  4. Запустите задачу вручную.
  5. Удалить задачу.

Это сработает, чтобы установить постоянную переменную среды для пользователя NetworkService. Что касается того, сработает ли это успешно для перемещения временных файлов для этого пользователя или вызовет какие-либо непредсказуемые побочные эффекты, я не могу сказать наверняка. Вам может потребоваться перезагрузка, чтобы проверить, помещает ли он временные файлы туда, куда вам нужно.

Проверить, что переменная среды была изменена для нужного пользователя, можно с помощью environmentкоманды в WMIC.

решение2

Переменные среды для Network Serviceучетной записи хранятся в реестре Windows и могут быть изменены с помощью regedit HKEY_USERS\S-1-5-20\Environment:.

Связанный контент