Das starten eines Prozesses in C# mit Benutzername & Passwort wirft "Zugriff Verweigert" Ausnahme
Innen ein .NET 3.5 web-Anwendung den Identitätswechsel ich versuche zum ausführen eines Prozesses über:
var process = new Process
{ StartInfo =
{ CreateNoWindow = true,
FileName = "someFileName",
Domain = "someDomain",
Username = "someUserName",
Password = securePassword,
UseShellExecute = false
}
};
process.Start();
-Änderung der trust-Modus, um voll im web.config nicht fix.
-Hinweis: die var securePassword ist ein secureString-set-up, die zuvor im code.
Dies wirft eine exception mit 'Zugriff Verweigert', wie seine Botschaft. Wenn ich entfernen Sie die Informationen zu Benutzername und Kennwort, die Ausnahme geht Weg, aber der Prozess beginnt, wie aspnet_wp-anstelle der Benutzer-ich brauche es.
Ich habe gesehen, dass dieses Problem in mehreren Foren und noch nie eine Lösung.
Irgendwelche Ideen?
- eine endgültige Lösung mit full-source-code-Beispiel funktioniert es ?
InformationsquelleAutor | 2008-09-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ProcessStartInfo, die ermöglicht es Ihnen, um die Anmeldeinformationen angeben. Der trick ist, dass das Passwort wird eine sichere Zeichenfolge, so dass Sie haben, um es zu übergeben als byte-array.
Den code könnte so Aussehen:
Nicht sicher, ob dieser es ist, aber ich hatte ein ähnliches problem und die Antwort war, dass das Konto nicht über die Berechtigung zum annehmen der Identität auf der Maschine. Dies kann geändert werden, indem Sie das Konto hinzufügen, um die Richtlinie "annehmen der Clientidentität nach Authentifizierung" mit der lokalen policy manager auf dem Computer.
Ich ging einen anderen Weg und setzen die ganze Anwendung wird in einem eigenen app-pool ausgeführt, wie der Benutzer wir ursprünglich die Identität. Nun, wenn asp.net erzeugt einen neuen Prozess, es spawnt unter dem Kontext des Benutzers anstelle des aspnet_wp. Nicht die genaue Lösung für das problem, das ich gebucht, aber es funktionierte für unsere situation.
Ich lief in das gleiche problem das du hast an einem Projekt. Es sollte ein Weg, um zu laichen einen Prozess aus Ihrer web-app mit bestimmten Anmeldeinformationen, aber in der Praxis, es ist ein Schlamassel am besten. Was ich Wunde bis schließlich tun, war nur, dass die app push-Informationen, die an eine MSMQ-und ein windows-Dienst, der knallte Elemente der Warteschlange einer bedient die Anfragen.
Sogar, wenn Sie die Applikation imitiert wird, es will immer noch laufen unter theaspnet Benutzerkonto.
Überprüfen Sie die Code Access Security Ebene als Prozess erfordert
Full Trust
. Ihre web-Anwendung ausgeführt werden kann, in einer teilweise vertrauenswürdigen Einstellung.Vom Prozess der MSDN-Seite:
Wollte ich erwähnen, dass ich versucht habe den code an
diese Website
einschließlich der aktualisierten code erwähnt in den Kommentaren. Dieser code führt den Prozess, wie die imitierte Identität (das ist wirklich alles was ich brauche), aber die Umlenkung des standard-Fehlers fehlschlägt -- also dieser link könnte nützlich sein, um diejenigen, die nicht betroffene im Umgang mit dem stderr.