c # - Sådan udføres EXE-filen på Windows 2008 ved hjælp af ASP.NET

Indlæg af Hanne Mølgaard Plasc

Problem



Sådan udføres EXE-filen på Windows 2008 ved hjælp af ASP.NET og IIS7? Jeg har forsøgt at køre kode nedenfor, men det synes ikke virke. Koden udføres uden fejl, men jeg kan ikke se Notepad i Processes list. Alt fungerer fint, hvis jeg bruger ASP.NET developer server, men ikke med IIS7.


string enginePath = "notepad";

var password = new System.Security.SecureString();
foreach (char character in ConfigurationManager.AppSettings["Credentials"])
    password.AppendChar(character);

var p = new Process
            {
                StartInfo =
                    {
                        FileName = enginePath,    
                        UseShellExecute = false,
                    }
            };


p.StartInfo.UserName = "Administrator";
p.StartInfo.Password = password;

p.Start();

Bedste reference


Som reaktion på sikkerhedsproblemer har Microsoft løbende øget isoleringen af ​​IIS-processen, så du ikke kan (eller jeg ikke har fundet et arbejde rundt, som giver dig mulighed for at ...) påberåbe sig noget uden for IIS-applikationsdomænet direkte. Du kan opbygge en Windows-tjeneste, som kan bruge WCF-kanaler til at krydse denne grænse indirekte. Denne tjeneste (konfigureret til at få lov til at interagere med skrivebordet) kan igen starte Notepad.exe.


Det er lidt klud for at få det til at ske, og jeg vil helt sikkert være interesseret i at se, om en anden har et bedre svar.

Andre referencer 1


Jeg har fjernet linjer nedenfor, og det begyndte pludselig at arbejde. Jeg kan ikke forklare, hvordan det er muligt at køre exe under IIS7-konto, men det virker.


p.StartInfo.UserName = "Administrator";
p.StartInfo.Password = password;