DevTrain

Autor: Hannes Preishuber

Befehle am Server ausführen

Wenn Sie Befehle am Server ausführen lassen wollen, ist ASP die geignete Methode.
Allerdings werden Sie auf Propbleme stossen, wenn Sie externe Programme aufrufen wollen. So könnte z.b. eine Datenbanksicherung gestartet werden.
Auch wenn der Befehl Server.Execute dies suggeriert, externe Programme können damti nicht aufgerufen werden.

Um dieses Problem zu lösen gibt es drei Ansätze:
EXEC Kommando
WScript
Komponente

Beginnen wir mit dem erstem dem EXEC Kommando.
Aus dem Microsoft Urzeiten des IIS gibt es dafür eine Lösung.
Dabei wird die Ausfühurung nicht durch die ASP.DLL vorgenommen sondern durch die ssinc.dll. Erstellen Sie dazu eine Datei mit der En-dung .stm. Innerhalb dieses Files können Sie dann ein EXEC Kom-mando ausführen. Der Zusatz CMD startet ein Batchprogramm.

<!-- #EXEC CMD="E:\buch\Test.bat" -->

Was unter NT 4.0 noch reibungslos funktioniert. Ist bei Windows 2000 den veränderten Sicherheitsrichtlinien zum Opfer gefallen. Sie erhalten folgende Meldung

Die CMD-Option ist nicht für #EXEC-Aufrufe aktiviert

Um die Anweisung zu aktivieren, fügen Sie den Eintrag SSIE-nableCmdDirective asl DWORD in die Registrierung ein, und setzen Sie deren Wert auf 1.
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet
 \Services
  \W3SVC
   \Parameters

Aber auch die Scripting Engine von Windows kann helfen. Über den Windows Scripting Host können Sie z.B. Programme ausführen oder DLLs registrieren. Denken Sie daran, das Sie kein optisches Feedback erhalten. Sie können nicht so einfach z.B. Notepad ausführen.

<%
function Srv_run(byVal SrvRun_cmd)

 on error resume next
 set oSrvRun = CreateObject("WScript.Shell")
 oSrvRun.Run SrvRun_cmd
 if err then
  oSrvRun_Err = true
  oSrvRun_sErrDesc = err.description
 end if
 set oSrvRun = nothing
 'on error goto 0
 if oSrvRun_Err then
  Srv_run = objSrvRun_sErrDesc & "!"
 else
  Srv_run = "Ok!"
 end if
end function
%>

Das registrieren einer DLL würde dann aus Ihrer ASP Seite so passieren.

Srv_run("regsrv32.exe mydll.dll")

Wenn Sie die dritte Methode mit einer Komponente in erwägung ziehen, können Sie z.B. die Freeware ASPEXEC verwenden.


Erfasst am: 06.01.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=250
© Copyright 2003 ppedv AG - http://www.ppedv.de