Prozessstart und Identitätswechsel
Ich habe Probleme beim Starten von Prozessen in einem imitierten Kontext in ASP.NET 2.0.,
Ich starte einen neuen Prozess in meinem Webservice-Code. IIS 5.1, .NET 2.0
[WebMethod]
public string HelloWorld()
{
string path = @"C:\KB\GetWindowUser.exe";
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory = Path.GetDirectoryName(path);
startInfo.FileName = path;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.ErrorDialog = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
Process docCreateProcess = Process.Start(startInfo);
string errors = docCreateProcess.StandardError.ReadToEnd();
string output = docCreateProcess.StandardOutput.ReadToEnd();
}
Die Konsolenanwendung "C: \ KB \ GetWindowUser.exe" enthält den folgenden Code:
static void Main(string[] args)
{
Console.WriteLine("Windows: " + WindowsIdentity.GetCurrent().Name);
}
Wenn ich den Webdienst ohne Identitätswechsel aufrufe, funktioniert alles einwandfrei.
Wenn ich den Identitätswechsel aktiviere, wird der folgende Fehler in die Variable "errors" im Webdienstcode geschrieben:
Unhandled Exception: System.Security.SecurityException: Zugriff verweigert. \ R \ n \ r \ n bei System.Security.Principal.WindowsIdentity.GetCurrentInternal (TokenAccessLevels desiredAccess, Boolean threadOnly) \ r \ n bei System.Security.Principal. WindowsIdentity.GetCurrent () \ r \ n um ObfuscatedMdc.Program.Main (String [] args) \ r \ nDie Zone der fehlgeschlagenen Assembly war: \ r \ nMyComputer
Impersonierter Benutzer ist lokaler Administrator und hat Zugriff auf die ausführbare Datei C: \ KB \ GetWindowUser.exe.
Wenn ich einen Fensterbenutzer explizit in den ProcesStartInfo-Eigenschaften Domain, User und Password spezifiziere, erhalte ich folgende Meldung:http: //img201.imageshack.us/img201/5870/pstartah8.jp
Ist es möglich, einen Prozess mit anderen Anmeldeinformationen als ASPNET von asp.net (IIS 5.1) aus zu starten?