Frage

Ich habe einen .NET Winddows -Dienst, der unter dem lokalen Systemkonto ausgeführt wird. In diesem Service wird dann eine COM -Komponente ausgeführt, die mit COM Interop in ATL auf Visual Studio 6 geschrieben wurde. Diese COM -Komponente wird dann unter dem Systemkonto ausgeführt. Ich weiß, dass ich einen anderen Bericht ausgeben kann, aber vorerst möchte ich die Dinge dort lassen, wo sie sind.

Das Problem ist, dass die COM -Komponente nach dem Stoppen des Windows -Dienstes ausgeführt wird. Ich kann den Prozess auch nicht töten. Task Manager wird es nicht töten, also habe ich Taskkill aus der Befehlszeile ausprobiert. Dies besagt sogar, dass es den Prozess erfolgreich gekündigt habe, aber wenn ich Task Manager überprüfe, wird er noch ausgeführt. Ich habe PSKILL ausprobiert, aber das heißt, Access hat verweigert.

Ich habe Google erschöpft, um eine Lösung dafür zu suchen. Kann jemand helfen?

Warum bleibt es überhaupt läuft?

War es hilfreich?

Lösung

Das Töten eines Prozesses ist nur eine Frage der Berechtigungen. Unter der Annahme von Vista/7 mit UAC können Sie keinen Systemprozess abtöten, wenn Sie nicht als Administrator ausgeführt werden. Hinweis - Es reicht nicht aus, Mitglied der örtlichen Administratorgruppe zu sein. Sie müssen Task Manager / Process Explorer / PSKILL oder was auch immer mit "Run als Administrator" starten, um sie tatsächlich mit Verwaltungsberechtigungen auszuführen. Ansonsten sind Sie nur ein normaler Benutzer und Sie werden abgelehnt.

Was den COM -Server betrifft: COM -Server haben eine Referenzzahl, und sie schalten sich erst nach, nachdem die Anzahl auf 0 fällt. In Ihrem Fall wird der Server möglicherweise aus wenigen Gründen nicht heruntergefahren:

  1. Ihr Client veröffentlicht nicht alle vom COM -Server erstellten Instanzen ordnungsgemäß. Ich bin kein .NET -Programmierer, daher kann ich nicht sagen, ob Sie sich darum kümmern sollten oder ob die Müllsammlung dies für Sie tut. Sie haben dieses Problem sicher, wenn Ihr Service aufgrund eines Absturzes oder eines externen Kündigs ohne Reinigung ordnungsgemäß aufgeräumt wird.
  2. Der Server könnte seine Referenzzahl intern erhöhen, aus welchen Gründen der Schöpfer im Sinn hatte. Dies könnte sogar ein Fehler im Server sein.
  3. IIRC, COM könnte einen Server für eine Weile laufen lassen, auch wenn es keine aktiven Clients gibt. Wenn dies der Fall ist, wird der Server nach wenigen Minuten heruntergefahren.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top