Hur kör jag ett vbscript från ASP.NET (C#)? Fredrik, Jag ska göra en web service som ska hämta/ändra/skapa objekt i ett active directory. Flera av dessa funktioner finns redan nu i vbsscript (och jag kan/vill inte skriva om dem till ett .NET-språk). Web servicen på servern ska alltså köra vbscripten. ok. hum... referera vbscript motorn (com dll) från din webservice och exekvera scripten där... Roggan... Nu har jag lyckats att köra ett test-vbscript (som inte fixar i AD:t. Det blir ett senare problem). Den slutgiltiga lösningen:Köra ett vbscript från ASP.NET
System.Diagnostics.Process runner = new System.Diagnostics.Process();
runner.StartInfo.FileName = "c:\\windows\\system32\\cscript.exe";
runner.StartInfo.Arguments = "c:\\minaskript\\createafile.vbs";
runner.StartInfo.CreateNoWindow = true;
runner.StartInfo.UseShellExecute = false;
runner.StartInfo.RedirectStandardOutput = true;
runner.Start();
runner.WaitForExit();
Label2.Text = runner.StandardOutput.ReadToEnd();
Ovanstående kod borde fungera, men ger resultatet access denied. Har testat att ge alla fulla rättigheter till cscript.exe.
/fSv: Köra ett vbscript från ASP.NET
Vad du gör med Process är att du kör en fil på servern inte din egna dator. För att köra denna fil på servern under ASPNET användaren behövs speciella rättigheter. Dock är det inte så smart att trigga program på servern från exempelvis en website. Skapa istället en service som sköter detta åt dig.
Berätta gärna mer varför du vill göra så här.
mvh JohanSv: Köra ett vbscript från ASP.NET
/fSv: Köra ett vbscript från ASP.NET
Har du satt att ASPNet användaren har adminrättigheter på din dator? (rekommenderar ej)
men allt som körs under ASP .Net gör under denna användaren. Det finns dock en lösning där du kan
"Lura" din dator att du är en annan, men då jag ser det som en säkerhetsrisk vet jag ej om jag vill visa hur ;-)
Vad du kan göra är att låta din web service ändra ett värde i db eller i en fil, bygga en win service som ligger och kollar av om värdet ändrats och där av köra processen. (vilket kommer gå under win servicens konto, det man anger i installfilen typ.)
Mvh JohanSv: Köra ett vbscript från ASP.NET
//RogerSv: Köra ett vbscript från ASP.NET
Vad jag förstår skall scriptet in i AD o ändra det kan man ju inte göra via ASP .Net användaren den som kommer att vara aktiva användaren närman nyttjar webservicen.
Mvh JohanSv: Köra ett vbscript från ASP.NET
Lösning:
Starta ett perlscript som i sin tur kör vbscriptet.
$cmd = "cscript C:\\test\\createafile.vbs";
system($cmd);
Varför detta fungerar och inte starta vbscriptet med cscript direkt, förstår jag inte.
/fSv: Köra ett vbscript från ASP.NET
Skapa en ny application pool på IIS:en. Med mer rättigheter än default.
Bortse helt från ovanstående lösningsförslag. Jag var helt ut och cycklade.