Laden...

Problem mit Tobit-API in Windows Dienst

Erstellt von Sclot vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.045 Views
S
Sclot Themenstarter:in
324 Beiträge seit 2007
vor 16 Jahren
Problem mit Tobit-API in Windows Dienst

Erst einmal ein Herzliches Hallo, ist mein erster Beitrag heute 🙂

Ich bin gerade dabei einen Windows dienst zu bauend er die API von Tobit benutzt.
Tobit ist ein Mail-Programm - praktisch sowas wie Outlook.

Nunja... wenn ich meinen diesnt starten möchte, taucht in den Ereignismeldungen dieser fehler auf:


Der Dienst kann nicht gestartet werden. System.Runtime.InteropServices.COMException (0x80040010): Objekt ist nicht in einem der Inplace Active States. (Ausnahme von HRESULT: 0x80040010 (OLE_E_NOT_INPLACEACTIVE))
   bei DvApi32.DavidAPIClass.Logon(Object server, Object User, Object password, Object profile, Object Dctl, Object cmd)
   bei TobitDienst.TobitDienst.einlesen() in e:\Visual Studio 2005\sharpdevelop\TobitDienst\TobitDienst.cs:Zeile 127.
   bei TobitDienst.TobitDienst.OnStart(String[] args) in e:\Visual Studio 2005\sharpdevelop\TobitDienst\TobitDienst.cs:Zeile 69.
   bei System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.

Die Tobit-API ist über COM als Referenz eingebunden (Liegt in c:\windows)
Die selben Funktionen,. als NICHT-Dienst funktionieren auch - das muss iregndwas damit zu tun haben das das ganze als dienst ausgeführt wird.

So.. was für code wollt ihr jetzt haben? 🙂

1.274 Beiträge seit 2005
vor 16 Jahren

Geht es denn wenn du dein Programm nicht als Dienst nutzt.

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein

S
Sclot Themenstarter:in
324 Beiträge seit 2007
vor 16 Jahren

Ja, wenn ich es als normale Windows Anwendung baue und ausführe, dann funktioniert es.

Nur als Dienst eben nicht.

Ich hab es jetzt mal mit:


		protected override void OnStart(string[] args)
		{
            Worker worker = new Worker();
            Thread thread = new Thread(new ThreadStart(worker.StartWorker));
            thread.Start();
		}

in eine "Worker"-Klasse gepackt...
Jetzt startet der dienst zwar schon - aber nach ca. 5 sec, wenn er die fehlerhafte Funktion aufruft, dann kommt der CLR-Debugger und meldet den selben Fehler wie oben beschreiben 😠

1.274 Beiträge seit 2005
vor 16 Jahren

Lass mal deinen Dienst mit Benutzer Berechtigungen laufen, schau mal ob es vielleicht ein Rechte Problem ist.

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein

S
Sclot Themenstarter:in
324 Beiträge seit 2007
vor 16 Jahren

Tatsächlich...
Der dienst lief als Lokales Systemkonto - da Tobit aber im AD steckt und ich mich da anmelden möchte muss der dienst logischerweise als Domänen-Benutzer laufen.

Echt blöd von mir 😠