COM-Objekte können nicht gedruckt werden, wenn sie aus ASP aufgerufen werden

In diesem Artikel erfahren Sie, wie Sie das Problem beheben, dass ein COM-Objekt eine Ausgabe an einen Drucker sendet, wenn der Aufruf von Active Server Pages aus fehlschlägt.

Ursprüngliche Produktversion: Aktive Serverseiten
Ursprüngliche KB-Nummer: 184291

Symptome

Ein COM-Objekt, das eine Ausgabe an einen Drucker sendet, schlägt fehl, wenn es von Active Server Pages (ASP) aufgerufen wird, funktioniert aber ordnungsgemäß, wenn es von einer interaktiven Anwendung aufgerufen wird. Dieses COM-Objekt kann entweder ein kommerzielles Produkt wie eine Microsoft Office-Anwendung oder ein benutzerdefiniertes Drittanbieterobjekt sein. Eine häufige Fehlermeldung ist "ClassName error '800a01e2' Printer error." (ClassName-Fehler '800a01e2'.

Ursache

Die Standard-APIs, die die meisten Objekte zum Drucken verwenden, hängen von Registrierungseinträgen ab, die sich in HKEY_CURRENT_USER befinden. Diese Registrierungsstruktur ist dynamisch. Je nachdem, unter welchem Benutzerkontext der Prozess ausgeführt wird, werden unterschiedliche Informationen in diese Struktur geladen. ASP-Seiten werden unter IIS ausgeführt, das als SYSTEM-Konto ausgeführt wird. Wenn Sie eine instance eines COM-Objekts in Ihrem ASP-Code erstellen, wird es standardmäßig auch als SYSTEM-Konto ausgeführt. Standardmäßig sind für das SYSTEM-Konto keine Drucker in der Registrierung eingerichtet.

Lösung

Sie können Drucker für das SYSTEM-Konto einrichten, um dieses Problem zu beheben. Führen Sie zum Einrichten von Druckern für das SYSTEM-Konto die folgenden Schritte aus:

Warnung

Diese Methode erfordert, dass Sie die Registrierung mithilfe der Registrierungs-Editor ändern. Die falsche Verwendung von Registrierungs-Editor kann schwerwiegende, systemweite Probleme verursachen, die möglicherweise eine Neuinstallation von Windows erfordern, um sie zu korrigieren. Microsoft kann nicht garantieren, dass probleme, die sich aus der Verwendung von Registry Editor ergeben, gelöst werden können. Verwenden Sie dieses Tool auf eigenes Risiko.

  1. Stellen Sie sicher, dass für den Benutzer, bei dem Sie derzeit auf dem Server angemeldet sind, die gewünschten Drucker installiert sind.

  2. Starten Sie die Registrierungs-Editor (Regedit.exe).

  3. Wählen Sie den folgenden Schlüssel aus:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

  4. Wählen Sie im Menü Registrierung die Option Registrierungsdatei exportieren aus.

  5. Geben Sie im Textfeld Dateiname den Text c:\Devices.reg ein.

  6. Wählen Sie den folgenden Schlüssel aus:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts

  7. Wählen Sie im Menü Registrierung die Option Registrierungsdatei exportieren aus.

  8. Geben Sie im Textfeld Dateiname den Text c:\PrinterPorts.reg ein.

  9. Wählen Sie den folgenden Schlüssel aus:

    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows

  10. Wählen Sie im Menü Registrierung die Option Registrierungsdatei exportieren aus.

  11. Geben Sie im Textfeld Dateiname den Text c:\Windows.reg ein.

  12. Wählen Sie auf der Schaltfläche Start die Option Ausführen aus. Öffnen Sie Devices.reg im Editor, indem Sie Editor Devices.reg im Dialogfeld Ausführen eingeben.

  13. Ersetzen Sie den Text HKEY_CURRENT_USER mit HKEY_USERS\.DEFAULT.

  14. Speichern Sie die Datei. Importieren Sie sie dann in die Registrierung, indem Sie in Windows Explorer auf die Datei doppelklicken.

  15. Wiederholen Sie die Schritte 13 bis 15 für PrinterPorts.reg und Windows.reg.

Hinweis

Diese Schritte funktionieren nur für lokale Drucker.

Führen Sie die folgenden Schritte aus, um IIS das Aufzählen der Netzwerkdrucker mithilfe des SYSTEM-Kontos zu ermöglichen.

Hinweis

Wenn der Prozess unter dem Netzwerkdienstkonto ausgeführt wird, sind explizite Berechtigungen für die neu erstellte Registrierung erforderlich.

  1. Stellen Sie sicher, dass Sie derzeit beim Server als Benutzer angemeldet sind, der die gewünschten Netzwerkdrucker installiert hat.

  2. Starten Sie den Registrierungs-Editor.

  3. Wählen Sie den folgenden Schlüssel aus:

    HKEY_CURRENT_USER\Printers\Connections

  4. Wählen Sie im Menü Registrierung die Option Registrierungsdatei exportieren aus.

  5. Geben Sie im Feld Dateinameden Namen c:\printconns.reg ein.

  6. Um die printconns.reg Datei im Editor zu öffnen, wählen Sie Start aus, wählen Sie Ausführen aus, geben Sie Editor printconns.reg in das Feld Öffnen ein, und wählen Sie dann OK aus.

  7. Ersetzen Sie den Text HKEY_CURRENT_USER durch den Text HKEY_USERS\.DEFAULT.

  8. Speichern Sie die Datei.

  9. Doppelklicken Sie in Windows Explorer auf die Datei, um die Datei in die Registrierung zu importieren.

  10. Starten Sie den Druckspoolerdienst neu.