Gli oggetti COM non vengono stampati quando vengono chiamati da ASP

Questo articolo consente di risolvere il problema che un oggetto COM invia l'output a una stampante non riesce quando viene chiamato da Active Server Pages.

Versione originale del prodotto: Pagine di Active Server
Numero KB originale: 184291

Sintomi

Un oggetto COM che invia l'output a una stampante ha esito negativo quando viene chiamato da Asp (Active Server Pages), ma funziona correttamente quando viene chiamato da un'applicazione interattiva. Questo oggetto COM può essere un prodotto commerciale, ad esempio un'applicazione di Microsoft Office, o un oggetto di terze parti personalizzato. Un messaggio di errore comune è "Errore ClassName '800a01e2' Errore della stampante".

Causa

Le API standard usate dalla maggior parte degli oggetti per stampare dipendono dalle voci del Registro di sistema disponibili in HKEY_CURRENT_USER. Questo hive del Registro di sistema è dinamico. A seconda del contesto utente in cui è in esecuzione il processo, verranno caricate informazioni diverse in questo hive. Le pagine ASP vengono eseguite in IIS, che viene eseguito come account SYSTEM. Quando si crea un'istanza di un oggetto COM nel codice ASP, per impostazione predefinita verrà eseguita anche come account SYSTEM. Per impostazione predefinita, nell'account SYSTEM non sono configurate stampanti nel Registro di sistema.

Risoluzione

È possibile configurare le stampanti per l'account SYSTEM per risolvere il problema. Per configurare le stampanti per l'account SYSTEM, seguire questa procedura:

Avviso

Questo metodo richiede di modificare il Registro di sistema usando il registro di sistema Editor. L'uso non corretto di Editor registro può causare gravi problemi a livello di sistema che potrebbero richiedere la reinstallazione di Windows per correggerli. Microsoft non può garantire che eventuali problemi derivanti dall'uso di Editor registro possano essere risolti. Usare questo strumento a proprio rischio.

  1. Assicurarsi che all'utente attualmente connesso nel server siano installate le stampanti desiderate.

  2. Avviare il Editor del Registro di sistema (Regedit.exe).

  3. Selezionare la chiave seguente:

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

  4. Dal menu Registro di sistema selezionare Esporta file del Registro di sistema.

  5. Nella casella di testo Nome file digitare c:\Devices.reg.

  6. Selezionare la chiave seguente:

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

  7. Dal menu Registro di sistema selezionare Esporta file del Registro di sistema.

  8. Nella casella di testo Nome file digitare c:\PrinterPorts.reg.

  9. Selezionare la chiave seguente:

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

  10. Dal menu Registro di sistema selezionare Esporta file del Registro di sistema.

  11. Nella casella di testo Nome file digitare c:\Windows.reg.

  12. Dal pulsante Start selezionare Esegui. Aprire Devices.reg nel Blocco note digitando blocco note Devices.reg nella finestra di dialogo Esegui .

  13. Sostituire il testo HKEY_CURRENT_USER con HKEY_USERS\.DEFAULT.

  14. Salvare il file. Importarlo quindi nel Registro di sistema facendo doppio clic sul file in Esplora risorse.

  15. Ripetere i passaggi da 13 a 15 per PrinterPorts.reg e Windows.reg.

Nota

Questi passaggi funzionano solo per le stampanti locali.

Per consentire a IIS di enumerare le stampanti di rete usando l'account SYSTEM, seguire questa procedura.

Nota

Se il processo è in esecuzione con l'account del servizio di rete, sono necessarie autorizzazioni esplicite per il registro appena creato.

  1. Assicurarsi di aver eseguito l'accesso al server come utente in cui sono installate le stampanti di rete desiderate.

  2. Avviare l'editor del Registro di sistema

  3. Selezionare la chiave seguente:

    HKEY_CURRENT_USER\Printers\Connections

  4. Scegliere Esporta file del Registro di sistema dal menu Registro di sistema.

  5. Nella casella Nome file digitare c:\printconns.reg.

  6. Per aprire il file printconns.reg nel Blocco note, selezionare Avvia, selezionare Esegui, digitare Blocco note printconns.reg nella casella Apri e quindi selezionare OK.

  7. Sostituire il testo HKEY_CURRENT_USER con il testo HKEY_USERS\.DEFAULT.

  8. Salvare il file.

  9. Per importare il file nel Registro di sistema, fare doppio clic sul file in Esplora risorse.

  10. Riavviare il servizio Spooler di stampa.