6

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

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

2 ответа2

3

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

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .