.NET Windows-Dienst stürzt ab, in ntdll.dll
Ich habe einen Windows Service in C# geschrieben. Es abstürzt, wenn es fordert, in ein 3rd-party COM-Komponente. Das problem scheint nur unter Windows 7 (x86 und x64). Wenn ich den gleichen service-code als eine Konsole-Anwendung auf Windows 7 (x86 und x64), funktioniert es einwandfrei.
Wenn ich den gleichen service unter Windows 2003 funktioniert es auch richtig. Ich denke, es könnte im Zusammenhang mit der UAC. Ich bin auf der Suche nach Anregungen/Richtung auf debugging diesen service zu identifizieren, was das problem verursacht. Die debug-Symbole für ntdll.dll? Unten sind die Infos aus dem Ereignisprotokoll.
Ereignis-ID: 1000, Ebene: Fehler
Name der fehlerhaften Anwendung: ServiceHost.exe, version: 1.0.0.0, Zeitstempel: 0x4f87bc9a
Fehlgeschlagenes Modul name: ntdll.dll, version: 6.1.7601.17725, Zeitstempel: 0x4ec49b60
Ausnahmecode: 0xc0000005
Fehleroffset: 0x0002bcbb
Fehlgeschlagene Prozess-id: 0x151c
Fehlgeschlagene Anwendung Startzeit: 0x01cd1939c9017b2d
Fehlgeschlagene Anwendung Pfad: E:\ServiceHost\bin\Debug\ServiceHost.exe
Fehlgeschlagenes Modul Pfad: C:\Windows\SYSTEM32\ntdll.dll
Berichts-Id: 08da6aa3-852d-11e1-a889-00155d016f32
Es gibt keine Fehlermeldung "Zugriff verweigert" hier. 0xc0000005 ist Zugriffsverletzung.
Machen Sie ein einfaches Programm, das reproduziert den Fehler und senden Sie es an den 3rd-party-Anbieter
InformationsquelleAutor Phil Bolduc | 2012-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als eine wilde Vermutung, Sie könnte fallen foul von Isolation Der Sitzung 0:
Wo diese Regel bewirkt, dass Ausgaben für Dienstleistungen, zum Beispiel, wenn etwas versucht zu erstellen-UI.
Den einfachste Umgang mit diesem Thema wäre die Rede an den Anbieter, der 3rd-party-Komponente und sicherzustellen, dass es Unterstützung für die Verwendung mit Dienstleistungen. Allerdings, wenn der Hersteller nicht mehr existiert, dass kann nicht möglich sein.
Wenn das Problem entsteht während der Dienst ausgeführt wird, kann es möglich sein, einen debugger Anhängen und erfassen Sie eine dump an der Stelle, an der der Fehler passiert (z.B. mit so etwas wie adplus aus den debugging tools for windows). Wenn das Problem passiert beim starten des Dienstes, kann es schwieriger zu diagnostizieren.
Die Sie wirklich brauchen, um zu isolieren, die Letzte Funktionsaufruf in Ihre code, bringt bei der Fehler, und dann versuchen, zu diagnostizieren, von dort aus.
Ich war in der Lage, um zu bestimmen, das ist die Ursache. Die COM-Komponente wird versucht, ein Gerät zu kreieren Kontext durch aufrufen von CreateDC (msdn.microsoft.com/en-us/library/dd183490(v=vs. 85).aspx). Ich muss an den Anbieter wenden, um zu sehen, ob dies wirklich erforderlich ist.
InformationsquelleAutor Damien_The_Unbeliever
Ändern Sie den account-Dienst auf alle anderen. Wie
Local System
.Das ist nicht genug. Ihr Administrator-Konto, konnte aber keine system-Rechte sowieso.
Nein, die Frage bezog sich auf Damiens Antwort. Sitzung 0 isoliert.
InformationsquelleAutor AgentFire
Den 3rd-party COM-Komponente ist mit einigen hacks (einige entfesselt APIs) eine Steigerung Ihrer Leistung und die
OS
- Schnittstelle geändert wurde ohne Vorankündigung in den nächsten Versionen auf Windows.War dies eine alte Politik vom frühen Tagen von windows (Norton, Office,...), um einige direkte Aufrufe von Kernel-und ...
InformationsquelleAutor Xaqron