我们有一个系统,它经常使用 Path.GetTempFile 和 Path.GetTempPath 调用来处理临时文件。该系统也以“网络服务”用户身份运行。我们发现 C 盘空间不足(对于其他问题,我们的临时文件已正确清理),并且希望能够将临时目录移动到其他驱动器。
最简单的解决方案似乎是更改网络服务用户的 TMP 或 TEMP 环境变量,但我似乎只能设置我自己的用户或由网络服务用户配置文件覆盖的“系统”变量。如何为网络服务用户设置这些变量?
答案1
这实际上相当困难。您可以使用该setx
命令为其他用户设置持久环境变量,但这对 NetworkService 不起作用,因为服务帐户没有密码(因此您的凭据将始终被拒绝)。
我知道的唯一方法是使用任务计划程序:
- 设置一个任务以用户“网络服务”身份运行。
- 让扳机保持空白。
- 对于该操作,让它
cmd.exe
使用参数运行/c setx temp [target]
。 - 手动运行该任务。
- 删除任务。
这将为 NetworkService 用户设置持久环境变量。至于这是否能成功地为该用户重新定位临时文件,或者是否会导致任何不可预测的副作用,我不能肯定地说。您可能需要重新启动以验证它是否将临时文件放在您想要的位置。
environment
您可以使用WMIC 中的命令来验证环境变量是否已为正确的用户更改。
答案2
帐户的环境变量Network Service
存储在 Windows 注册表中,可以通过 regedit 进行修改:HKEY_USERS\S-1-5-20\Environment
。