Autor Beitrag
mannyk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 1



BeitragVerfasst: Mo 11.10.10 20:04 
Hi Leute,

ich möchte gerne per Web Applikation (MVC v1, .NET 3.5) einen externen Prozess starten. Wenn ich das lokal mit VS2008 ausführe funktioniert das ohne Probleme. Allerdings wird der Prozess in IIS 7.5 (OS: Win 7 prof) nicht gestartet.

Anbei der Code, der den Prozess starten sollte:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public ActionResult SendCommand()
        {
            ContentResult res = new ContentResult();
            res.ContentType = "text/plain";

            Process process = new Process();
            process.StartInfo.FileName = "C:\\Program Files (x86)\\girder32\\event.exe";
            process.Start();
            Response.Write("OK");
            
            return res;
        }


Danke und lg,
mannyk
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 11.10.10 22:50 
a.) Der User unter dem dein IIS Process läuft hat keine Berechtigung Prozesse auszuführen. Dieses Recht müsstest du dem User geben bzw. einen User benutzen der das darf.
und
b.) wenn der IIS User das dann darf dann würde der Prozess in einer Usersession dieses Users laufen und natürlich, wenn du mit einem anderen User interaktiv angemeldet bist, von diesem User auf seinem Desktop nicht zu sehen sein.
und
c.) bekommst du sicherlich beim Aufruf von Process.Start eine Exception die sprechender ist als deine Meldung 'wird nicht gestartet'. Solltest du in deinen Logs mal nachsehen.
ThoMa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 3



BeitragVerfasst: Mo 11.10.10 22:52 
Hallo,

denke bitte, dass ASP.NET-Aufrufe nicht in Deinem Benutzerkontext stattfinden, sondern im Benutzerkontext desjenigen, der im IIS konfiguriert ist. Wahrscheinlich hat der entsprechende Account keinerlei Recht diesen Prozess zu starten. Daher wird der Prozess auch nicht gestartet.

Guck Dir mal die Informationen im Internet zum Stichwort Impersonation an. Hiermit kannst Du sozusagen temporär den Sicherheitskontext wechseln.

Grüße
ThoMa
mannyk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 1



BeitragVerfasst: Di 12.10.10 10:18 
Hallo Leute und danke für eure Hilfe!

Ich habe nun herausgefunden, dass es wegen dem anderen (IIS) User liegt. Ich muss jedoch den Prozess unter meinem Benutzer-Account starten, da der Prozess von meiner Benutzer-Session abhängt.

Also habe ich versucht, den Prozess mit meinem Benutzerprofil zu starten.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
Process process = new Process();
process.StartInfo.FileName = "C:\\Program Files (x86)\\girder32\\event.exe";
process.StartInfo.UserName = "User";
process.StartInfo.Password = pwString;
process.StartInfo.UseShellExecute = false;
process.Start();

Nun sehe ich allerdings gar nichts mehr von dem Prozess (also auch nicht im Task Manager).

Edit: Habe nun auch versucht die "Process Model Identity" im betreffenden Application Pool auf mein Profil zu ändern.
Im Task Manager wird zwar die .exe dann auch unter meinem Usernamen angezeigt, aber sie ist sonst leider nicht sichtbar.


Was mache ich noch falsch?
Danke für eure Antworten!
lg,
mannyk