我們有一個系統,它使用 Path.GetTempFile 和 Path.GetTempPath 呼叫來相當頻繁地處理臨時檔案。該系統也以「網路服務」使用者運作。我們發現 C 磁碟機上的空間不足(對於其他問題,我們的臨時檔案已正確清理),並且希望能夠將臨時目錄移至其他磁碟機。
最簡單的解決方案似乎是更改網路服務使用者的 TMP 或 TEMP 環境變量,但我似乎只能設定我自己的使用者或被網路服務使用者設定檔覆蓋的「系統」變數。如何為網路服務使用者設定這些變數?
答案1
這實際上是相當困難的。您可以使用該setx
命令為其他使用者設定持久環境變量,但這不適用於 NetworkService,因為服務帳戶沒有密碼(因此您的憑證將始終被拒絕)。
據我所知,執行此操作的唯一方法是使用任務計劃程序:
- 設定一個任務以使用者「網路服務」運作。
- 將觸發器留空。
- 對於該操作,讓它
cmd.exe
使用參數運行/c setx temp [target]
。 - 手動運行任務。
- 刪除任務。
這將為 NetworkService 使用者設定持久環境變數。至於這是否會成功地為該用戶重新定位臨時文件,或者是否會導致任何不可預測的副作用,我不能肯定地說。您可能需要重新啟動以驗證它是否將臨時檔案放在您想要的位置。
您可以使用 WMIC 中的命令來驗證是否已為正確的使用者變更了環境變數environment
。
答案2
帳戶的環境變數Network Service
儲存在 Windows 登錄中,可以透過 regedit: 進行修改HKEY_USERS\S-1-5-20\Environment
。