Beim Starten eines Prozesses in C # mit Benutzername und Kennwort wird die Ausnahme "Zugriff verweigert" ausgelöst

8

In einer .NET 3.5 Webanwendung, die Identitätswechsel ausführt, versuche ich, einen Prozess über:

auszuführen %Vor%

- Das Ändern des Trust-Modus in web.config wurde nicht behoben.

- Beachten Sie, dass das var securePassword ein secureString ist, der früher im Code eingerichtet wurde.

Dies löst eine Ausnahme mit "Zugriff verweigert" als seine Nachricht aus. Wenn ich den Benutzernamen und das Passwort lösche, verschwindet die Ausnahme, aber der Prozess beginnt als aspnet_wp anstelle des Benutzers, für den ich ihn brauche.

Ich habe dieses Problem in mehreren Foren gesehen und noch nie eine Lösung gesehen. Irgendwelche Ideen?

    
Mark Byers 23.09.2008, 15:20
quelle

6 Antworten

2

Sie können ProcessStartInfo verwenden, mit der Sie Anmeldeinformationen angeben können. Der Trick ist, dass das Passwort eine sichere Zeichenfolge ist, also müssen Sie es als Byte-Array übergeben.

Der Code sieht möglicherweise so aus:

%Vor%     
Mike L 23.09.2008 15:32
quelle
1

Nicht sicher, ob dies der Fall ist, aber ich hatte ein verwandtes Problem und die Antwort war, dass das Konto keine Berechtigung hatte, sich auf dem Rechner auszugeben. Dies kann durch Hinzufügen des Kontos zur Richtlinie "Annehmen eines Clients nach Authentifizierung" mit dem lokalen Richtlinien-Manager auf dem Computer geändert werden.

    
Brian ONeil 24.09.2008 05:41
quelle
1

Ich ging einen anderen Weg und legte die gesamte Anwendung in einen eigenen App-Pool, der als der Benutzer ausgeführt wurde, für den wir uns ursprünglich ausgaben. Jetzt, wenn asp.net einen neuen Prozess hervorbringt, spawnt es im Kontext des Benutzers anstelle von aspnet_wp. Nicht die genaue Lösung für das Problem, das ich gepostet habe, aber es hat für unsere Situation funktioniert.

    
Bryan 29.09.2008 14:17
quelle
0

Ich stieß auf das gleiche Problem wie bei einem Projekt. There sollte eine Möglichkeit sein, einen Prozess aus Ihrer Web-App mit bestimmten Anmeldeinformationen zu generieren, aber in der Praxis ist es bestenfalls ein Kludim. Was ich schließlich aufwickelte, war, dass die App die Push-Informationen an einen MSMQ schickte und einen Windows-Dienst hatte, der die Elemente der Queue platzierte und die Anfragen abwickelte.

Auch wenn die Anwendung sich imitiert, möchte sie trotzdem unter dem aspnet-Benutzerkonto laufen.

    
Charles Graham 23.09.2008 15:26
quelle
0

Überprüfen Sie die Codezugriffssicherheit Ebene als Prozess erfordert% Code%. Ihre Webanwendung wird möglicherweise in einer Teilvertrauensstellung ausgeführt.

Auf der Seite Prozess-MSDN:

  

Berechtigungen

   * LinkDemand
     für volles Vertrauen für den unmittelbaren Anrufer. Diese Klasse kann nicht von teilweise vertrauenswürdigem Code verwendet werden    * InheritanceDemand
     für vollständiges Vertrauen für Erben. Diese Klasse kann nicht von teilweise vertrauenswürdigem Code vererbt werden.

    
Adrian Clark 23.09.2008 15:44
quelle
0

Ich wollte erwähnen, dass ich den Code an versucht habe diese Website einschließlich des aktualisierten Codes, der in den Kommentaren erwähnt wird. Dieser Code führt den Prozess als imitierte Identität aus (was wirklich alles ist, was ich brauche), aber das Umleiten des Standardfehlers schlägt fehl - daher könnte dieser Link für diejenigen nützlich sein, die sich nicht mit dem stderr befassen.

    
Bryan 23.09.2008 16:22
quelle

Tags und Links