Wir haben ein System, das Path.GetTempFile- und Path.GetTempPath-Aufrufe verwendet, um ziemlich häufig mit temporären Dateien zu arbeiten. Dieses System läuft auch als Benutzer „Netzwerkdienst“. Wir stellen fest, dass uns auf dem Laufwerk C der Platz ausgeht (aus anderen Gründen werden unsere temporären Dateien ordnungsgemäß bereinigt) und möchten das temporäre Verzeichnis auf ein anderes Laufwerk verschieben können.
Die einfachste Lösung hierfür scheint darin zu bestehen, die TMP- oder TEMP-Umgebungsvariablen für den Netzwerkdienstbenutzer zu ändern, aber ich kann anscheinend nur meinen eigenen Benutzer oder die „System“-Variablen festlegen, die vom Netzwerkdienstbenutzerprofil überschrieben werden. Wie lege ich diese Variablen für den Netzwerkdienstbenutzer fest?
Antwort1
Das ist eigentlich ziemlich schwierig. Sie können den setx
Befehl verwenden, um persistente Umgebungsvariablen für andere Benutzer festzulegen, aber das funktioniert nicht für NetworkService, da die Dienstkonten keine Passwörter haben (Ihre Anmeldeinformationen werden also immer abgelehnt).
Die einzige mir bekannte Möglichkeit hierfür ist die Verwendung des Taskplaners:
- Richten Sie eine Aufgabe ein, die als Benutzer „Netzwerkdienst“ ausgeführt werden soll.
- Lassen Sie die Auslöser leer.
- Lassen Sie die Aktion
cmd.exe
mit den Parametern ausführen/c setx temp [target]
. - Führen Sie die Aufgabe manuell aus.
- Löschen Sie die Aufgabe.
Damit wird eine persistente Umgebungsvariable für den NetworkService-Benutzer festgelegt. Ob dies erfolgreich funktioniert und die temporären Dateien für diesen Benutzer verlagert, oder ob es unvorhersehbare Nebenwirkungen verursacht, kann ich nicht mit Sicherheit sagen. Möglicherweise müssen Sie einen Neustart durchführen, um zu überprüfen, ob die temporären Dateien dort abgelegt werden, wo Sie sie haben möchten.
environment
Sie können mithilfe des Befehls in WMIC überprüfen, ob die Umgebungsvariable für den richtigen Benutzer geändert wurde .
Antwort2
Umgebungsvariablen für Network Service
Konten werden in der Windows-Registrierung gespeichert und können mit regedit geändert werden: HKEY_USERS\S-1-5-20\Environment
.