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

Chr*_*ips 7 windows-7 environment-variables temporary-files

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

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

bah*_*rep 7

帐户的环境变量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 中的命令来验证是否已为正确的用户更改了环境变量。