Frage

Ich versuche, mithilfe von Process.Start, ein externes Problem von C # zu laufen, aber in Probleme mit Berechtigungen leite. Wenn ich eine Eingabeaufforderung normalerweise (nicht als Administrator) öffnen und betreiben meine Befehle sie funktionieren gut, aber wenn ich eine Eingabeaufforderung über Process.Start öffnen, erhalte ich einen Schreibfehler auf dem Verzeichnis. ( „Ich kann nicht auf Datei test.log schreiben“)
Wenn ich es als Admin über Process.Start laufen funktioniert es gut, aber ich habe die Berechtigungen Popup. Hat jemand irgendwelche Ideen haben, die helfen könnten Sie mir dieses herausfinden? Dank!

Hier ist der Code, den ich mit:

Process proc = new Process();
proc.StartInfo.FileName = @"cmd.exe";
proc.StartInfo.Arguments = @"/k latex C:\Users\Shane\Documents\test.tex";
proc.Start();
proc.WaitForExit();
War es hilfreich?

Lösung

Ich frage mich, ob es ein Diagnoseprotokoll zum aktuellen Arbeitsverzeichnis zu schreiben versucht, mit dem Sie keine Berechtigungen für haben. (Ich weiß nicht, ob es ohne Weiteres wird das Arbeitsverzeichnis erben, oder das Verzeichnis sein, das cmd.exe enthält.) Ich schlage vor, Sie das Arbeitsverzeichnis für den neuen Prozess angeben ProcessStartInfo.WorkingDirectory verwendet wird.

(Nebenbei, ich persönlich finde es sauberer ein neues ProcessStartInfo eine bevöl zu schaffen, dass - C # Objektinitialisierer diese besonders schön machen) und dann Anruf Process.Start(ProcessStartInfo) es zu starten. Ansonsten sieht es aus wie es bereits ein Prozess, wenn es noch nicht wirklich ist. Nur MHO aber, und in keinem Zusammenhang mit dem Problem, das Sie untersuchen, wahrscheinlich.)

Andere Tipps

Statt cmd.exe als Filename-Eigenschaft des Objekts Process verwenden, halten Sie Ihre Befehle in einer Batch-Datei und die Datei dann zur Ausführung verwenden.

Sie können auch Administrator-Privilegien wie Benutzername erwähnen, Passwort, Domain usw. über Startinfo-Eigenschaft Process-Klasse. Wenn Sie diese Eigenschaften verwenden, glaube ich die Erlaubnis Problem nicht kommen wird. Hier Sie mehr Informationen zu Startinfo-Eigenschaft finden.

Hope es hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top