2010-11-20 15 views
5

Ho sviluppato un'app server che utilizza l'automazione COM di Excel 2007 per convertire alcuni file xls. Viene avviato come servizio su un'istanza di Windows Datacenter, in esecuzione con il proprio utente, e ho dovuto modificare le impostazioni di sicurezza DCOM ("avvia come utente interattivo") per farlo funzionare.L'automazione COM di Excel smette di funzionare quando l'utente si disconnette

Il problema è che quando mi disconnetto (tramite RDP), smette di funzionare. Accedo, funziona di nuovo.

Qualcuno ha avuto lo stesso problema? Sono contento di qualsiasi aiuto a questo punto.

risposta

7

Ok, quindi non ho potuto ottenere Excel per operare senza un utente interattivo, nessuna quantità di inganni DCOMCNFG farebbe. Quindi ho semplicemente configurato l'autologin per l'utente in cui il servizio è in esecuzione (vedere http://support.microsoft.com/kb/315231 per istruzioni).

Questo ha l'effetto che all'avvio del server, quell'utente effettuerà l'accesso come sessione della console interattiva. A differenza delle sessioni RDP, questo è permanente e rende Excel felice.

Altri suggerimenti per le anime Poors che hanno a che fare qualcosa di simile:

  • creare la cartella C: \ Windows \ System32 [o SysWOW64] \ config \ systemprofile \ Desktop
  • assicurarsi una stampante predefinita è configurato per l'utente viene eseguito il servizio
  • modificare le impostazioni DCOMCNFG (MMC -32, aggiungere "servizi componenti") di Excel per l'esecuzione utilizzando l'account interattivo
  • cambiamento default globali DCOM per consentire l'accesso locale, avvio locale e locali attivazione per l'utente del servizio e corre sotto

Buona fortuna!

+0

Intendi dire eseguire "Altri suggerimenti" come hai indicato simulare un utente interattivo sempre attivo? – mateolargo

+0

L'utilizzo dell'accesso automatico è un rischio per la sicurezza. Come potresti proteggere il tuo server in questo modo? –

2

C'è una cosa che si chiama Excel Services che dovrebbe rendere possibile l'esecuzione di Excel come un servizio utilizzando SharePoint, che consentirebbe l'esecuzione non presidiata senza nessuno registrato.

+0

Ciao Joel, grazie per la risposta! :) In realtà stavo pensando a te quando ho eseguito il debug di questo, notando che Excel è più difficile da automatizzare di Word o Powerpoint, richiedendo un utente interattivo connesso per operare. Probabilmente sai perché, avendo lavorato sugli interni. Sono a conoscenza dei servizi di MS Office forniti da Sharepoint, ma sfortunatamente sto sviluppando questo servizio per un concorrente diretto di SharePoint.^_^Pubblicherò la soluzione che ho trovato di seguito. Saluti! –

1

Ho avuto questo problema, e ho trovato che la risposta è in realtà nel DCOM Configuration.

ho fatto quanto segue per risolvere il problema:

  1. Aprire le Proprietà DCOM Excel
  2. Go alla scheda Identity
  3. Selezionare This User
  4. inserire le credenziali di chi ha accesso a Excel

Potrebbe essere necessario andare alla scheda Security e assicurarsi che l'utente sopra specificato disponga delle autorizzazioni appropriate.

Dopo aver eseguito questa operazione, è stato possibile disconnettere il server mentre si utilizzavano ancora le librerie di automazione COM di Excel.

0

Se l'account che è in esecuzione EXCEL è amministratore allora questo lavoro:

a 64 bit (x64), creare questa cartella: C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop Per 32- bit (x86), creare questa cartella: C: \ Windows \ System32 \ config \ systemprofile \ Desktop Altrimenti per risolvere il problema attenersi alla seguente procedura:

  1. Accesso al server come amministratore di
  2. Vai alla " Avvia "->" Esegui "e inserisci" MMC comexp.msc/32 "
  3. Passare alle proprietà dell'applicazione Microsoft Excel, in Identità, cambiarlo in Utente interattivo da Utente di avvio (che è impostato per impostazione predefinita).
  4. Passare alle proprietà della cartella di lavoro di Microsoft Office Excel 2007, in Identità, cambiarlo in Utente interattivo da Utente di avvio (che è impostato per impostazione predefinita).
  5. Vai alla scheda Protezione per Microsoft Excel Applicazione e selezionare Personalizza per "di esecuzione e attivazione permessi" e Aggiungi account (in cui Excel è in esecuzione) ad esso e dare "Avvio locale" e il permesso "di attivazione locale"
  6. Vai alla scheda della protezione per Microsoft Office Excel 2007 cartella di lavoro e selezionare Personalizza per "Autorizzazioni di accesso" e aggiungi account (in cui Excel è in esecuzione) ad esso e dare il permesso "accesso locale"
0

lato server:

A) Passa "Utente Interattivo" a "Questo utente".

B) "questo utente" funziona solo dopo la creazione di queste cartelle:

  • C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop
  • C: \ Windows \ System32 \ Config \ systemprofile \ Desktop

C) Attendere che ... Fase B) fa scattare automaticamente Windows per creare:

  • C: \ Users \ Default \ Desktop

nota la definizione di "utente" interattivo è quello di piggybacked su qualunque sia la attiva utente connesso al server. Quindi non è stato possibile avviare MS Office quando nessun utente è attivo sul server.

I.e., per me, la soluzione era un ibrido delle soluzioni già proposte. Ho usato Office 2013 (x86) su Win 2012R2. Il mio problema era invece con Word (per usare WordToPDF).

Dettagli per Fase B:

  • Accedere al Server> Start> Esegui DCOMCNFG.EXE (per lanciare Servizi componenti)> Directory principale console> Servizi componenti> Computer> Risorse del computer> Config DCOM ...
  • Scorrere fino a "Documento Microsoft Word 97 - 2003" o "Applicazione Microsoft Excel" (... cioè qualsiasi cosa MS Office sia necessaria per il lancio) ...
  • Fare clic con il pulsante destro del mouse e selezionare "Proprietà"> scheda Identità> Scegliere "Questo utente"> immettere le credenziali per alcuni utenti con accesso a MS Office sul server. (Io ho usato un utente con le autorizzazioni di amministratore.)

Dettagli per Fase C:

  • L'attesa varia da 5 minuti per durante la notte. Facoltativamente, crea questa cartella manualmente (se la cartella non esiste e hai fretta di completare il test).
Problemi correlati