Set ProcessStartInfo.EnvironmentVariables beim Verb="runas"

Ich bin der Entwicklung einer C# - Anwendung.

Brauche ich, um zu erstellen, und übergeben Sie die Variablen, um einen neuen Prozess, und ich Tue es mit ProcessStartInfo.EnvironmentVariables.

Den neuen Prozess ausführen müssen, angehoben wird, so bin ich mit Verb = "runas"

var startInfo =  new ProcessStartInfo(command)
{
    UseShellExecute = true,
    CreateNoWindow = true,
    Verb = "runas"
};
foreach (DictionaryEntry entry in enviromentVariables)
{
    startInfo.EnvironmentVariables.Add(entry.Key.ToString(), entry.Value.ToString());
}

Das problem ist, dass nach dem msdn-Dokumentation:

Müssen Sie die UseShellExecute - Eigenschaft auf false um den Prozess zu starten nach dem ändern der EnvironmentVariables Eigenschaft. Wenn UseShellExecute ist wahr, ein InvalidOperationException wird ausgelöst, wenn die Start-Methode aufgerufen wird.

aber die runas variable erfordert UseShellExecute=true

Gibt es eine Möglichkeit, beides zu tun: führen Sie Prozess als erhöht und auch die Umgebungsvariablen?

BEARBEITEN

Werde ich versuchen, meine Frage anders formulieren...

Gibt es eine Möglichkeit, Argumente übergeben, die sicher zu einem anderen Prozess, so dass nur der andere Prozess wird in der Lage sein zu Lesen der Argumente.

  • Vielleicht nicht schön, aber könnte funktionieren: erstellen Sie eine Batchdatei ersten und setzen Sie die environment-vars mit setx /M-Taste Wert. Sie führen Sie zunächst die batch-script und dann real-Befehl. Das wird Durcheinander Ihre machinewide environmentvars obwohl.
  • Danke, aber das könnte dazu führen, das eine Sicherheitslücke, da jeder unter diesem user Lesen können die globalen traumhaften Variablen
  • Ja, ich sagte bereits, dass es nicht schön ist...und das war eine Untertreibung 🙁
  • Haben Sie versucht, die Einstellung der Environment-vars in (mittels System.Umwelt.SetEnvironmentVariable(Schlüssel, balue)); und starten Sie dann den Prozess?
  • aber wie kann ich tun, wenn UseShellExecute = true?
InformationsquelleAutor user844541 | 2012-08-06
Schreibe einen Kommentar