Ich möchte ein anderes Programm starten, das als Benutzer von einem Programm ausgeführt wird, das als Administrator ausgeführt wird.Starten Sie einen Prozess als Benutzer aus einem Prozess, der als Administrator ausgeführt wird
Das Problem ist, dass das zweite Programm Outlook verwenden muss, was nicht möglich ist, wenn das Programm als admin läuft. Das Hauptprogramm muss als Admin ausgeführt werden.
Ich habe schon kommen mit diesen beiden Lösungen:
Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\"");
oder
Process.Start("explorer.exe", "SomeProgram.exe");
Aber ich habe ein Problem mit beiden Lösungen. Der erste fragt den Benutzer nach dem Passwort (nur das erste Mal nach dem Neustart von Windows). Das zweite Problem wird in Zukunft nicht funktionieren, denn soweit ich es herausfand, wird es als Bug betrachtet und wahrscheinlich mit einem zukünftigen Update behoben.
Also würde ich gerne wissen, gibt es eine andere Lösung, wo der Benutzer sein Passwort nicht eingeben muss?
Dies scheint für mich zu arbeiten:
Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000 " + "\"SomeProgram.exe" + "\"");
Raymond Chen, einen guten Job zu beschreiben, tat dies in [Wie kann ich einen unerhöhten Prozess von meinem erhöhten Prozess und umgekehrt zu starten?] (Http://blogs.msdn.com/b/oldnewthing/archive/ 2013/11/18/10468726.aspx) (die auch alle Arten von Details umfasst, wie zum Beispiel, als die Höhe andere Kontoanmeldeinformationen als die für den Rest der Sitzung verwendete verwendete) –
Aber ist das nicht nur eine andere Art, das zu verwenden exploer.exe um den Job zu machen? Wie auch immer ich eine andere Lösung gefunden habe, habe ich es dem ursprünglichen Beitrag hinzugefügt. – FKorni
Geht Ihre Lösung korrekt mit der Entfernung von Alices Administratorkonto zu Bobs Benutzerkonto um (unter Verwendung der Beispiele von Raymonds Link)? –