Announcement

Collapse
No announcement yet.

Dienst unter NT 4.0 per InstallShield oder Delphi starten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dienst unter NT 4.0 per InstallShield oder Delphi starten

    Hallo, <p>

    ich habe mit InstallShield 5.0 eine Installationsroutine für einen SQL-Server geschrieben. Dieser Server registriert sich als automatischer Dienst und wird beim nächsten Start von NT auch gestartet. (oder kann natürlich auch von Hand starten). Ich möchte dem Benutzer aber den Restart ersparen und mir die Erklärung, wie er den Service von Hand startet. Nach der Installation soll er einfach laufen. Wie geht das?<p>

    Gruß<p>

    Wolfgang Roller

  • #2
    Hallo,

    für diese Aufgabe gibt es je nach verwendeten SQL-Server mindestens die beiden folgenden Alternativen:

    a) Zugriff auf den <i>Service Control Mananager</i>, um den NT-Dienst über die Win32-API-Funktion <b>StartService</b> zu starten. Beispiele dafür lassen sich hier im Forum finden, wenn nach der Zeichenkette "StartService" oder "OpenSCManager" gesucht wird. Auf diesem Weg kann jeder NT-Dienst gestartet werden.

    b) Zugriff auf das <b>SQLDMO</b>-Objekt vom <i>SQL Server 7</i>, um den Server über <i>Automation</i> vom eigenen Programm aus zu starten. Das folgende Beispiel demonstriert die Vorgehensweise für das Starten und Stoppen des SQL Server 7 (bzw. der MSDE):
    <pre>
    uses
    ComObj, ActiveX,
    SQLDMO_TLB; // Typbibliothek in Delphi importieren

    var
    FSrv : _SQLServer; // Interface-Zeiger auf das SQLDMO-Objekt

    procedure TForm1.ButtonStartClick(Sender: TObject);
    begin
    FSrv := CoSQLServer.Create;
    FSrv.LoginTimeout := 20;
    FSrv.Start(True, '(local)', 'sa', '');
    end;

    procedure TForm1.ButtonStopClick(Sender: TObject);
    begin
    FSrv.DisConnect;
    FSrv.Stop;
    end;
    </pre>
    Wenn diese Aufrufe in eine DLL verpackt werden, die in den Ressourcen den Eintrag <b>OLESelfRegister</b> deklariert, versucht der InstallSHIELD automatisch diese DLL zu registrieren. Wenn man diese aufgerufene Exportfunktion für eigene Sachen "missbraucht", kann man ohne eine EXE den InstallSHIELD (auch die Express-Version von Delphi) dazu bringen, eigene Sachen zu erledigen ;-)
    &#10

    Comment

    Working...
    X