如何为“网络服务”用户设置 TEMP 环境变量?

如何为“网络服务”用户设置 TEMP 环境变量?

我们有一个系统,它经常使用 Path.GetTempFile 和 Path.GetTempPath 调用来处理临时文件。该系统也以“网络服务”用户身份运行。我们发现 C 盘空间不足(对于其他问题,我们的临时文件已正确清理),并且希望能够将临时目录移动到其他驱动器。

最简单的解决方案似乎是更改网络服务用户的 TMP 或 TEMP 环境变量,但我似乎只能设置我自己的用户或由网络服务用户配置文件覆盖的“系统”变量。如何为网络服务用户设置这些变量?

答案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

相关内容