Dass das so nicht funktioniert ist klar. Du willst etwas beim Laden der
DLL machen, greifst aber dort ein, wo ein WebModule erstellt wird. Und das passiert (erst) bei einer Web-Anfrage. Außerdem werden bei mehrfachen parallelen Anfragen an die
DLL auch mehrere Instanzen von diesem WebModule erzeugt, was dann jedes Mal deine Batch aufrufen würde.
Versuche mal das ShellExecute in der Projektdatei vor "Application.Run" unterzubringen...