Pergunta

Nós temos um serviço do Windows que é executado em 2003 Server. Ele abre um documento do Word fonte usando o Interop Word e, em seguida, faz algumas coisas com ele. Ele também faz o mesmo com arquivos de Excel e PowerPoint.

Recentemente, tentei mover este serviço em uma máquina Windows Server 2008 e estão tendo problemas reais com ele.

COMException em Microsoft.Office.Interop.Excel.Workbooks.Open COMException em Microsoft.Office.Interop.Word.Documents.Open

Eu recebo as excepções acima referidas quando o serviço Windows está em execução em 2008 Server. Olhando para o Gerenciador de tarefas, o aplicativo faz ok carga, mas depois fecha novamente pouco tempo depois.

Eu li coisas sobre Vista e Server 2008 não ter um Session0 mais, e tentei mudar as propriedades de segurança do Office DCOM em conformidade, incluindo mudar a identidade do usuário que executa-los para Integrated mas sem sucesso.

Alguém sabe se isso é possível em tudo? Este é um aspecto fundamental do nosso sistema e por isso temos de ser capazes de fazer isso.

Graças

Foi útil?

Solução

Eu tive problemas automatizar Office a partir de um serviço do Windows no Windows Server 2008, mesmo que bem funciona no Windows Server 2003. O problema também ocorre na chamada Open, por isso pode ser o mesmo problema.

Eu tentei seguir o conselho dado por H Ogawa em este MSDN fio , e parecia ao trabalho. É bizarro, mas parabéns para o Sr. Ogawa para descobrir isso.

Resumo do 'Ogawa hack': criar uma pasta desktop para o perfil do sistema, como:

 C:\Windows\System32\config\systemprofile\Desktop

e , se executado em uma máquina de 64 bits, criar outro um, como:

 C:\Windows\SysWOW64\config\systemprofile\Desktop

Além disso, a pasta (s) permissão necessidade de gravação por qualquer usuário é "condução" Office.


[Editar: corrigido ligação URL]

[Edit 2: esclareceu que em 64-bit do Windows, você precisa de ambas as pastas, não apenas o WOW64 um]

Outras dicas

Se você estiver usando Apache, que você pode também precisa seguir estes passos para obter MS Word funcionando corretamente (juntamente com tudo descrito em outras respostas):

Abaixo está uma imagem mostrando os dois diálogos que você precisa para abrir: enter descrição da imagem aqui

Para o Apache:

Serviços-> em Apache> Right Click (Propriedades) -> Log On Tab

MS Word:

Lançamento dcomcnfg.exe-> Console Root-> Componente Serviços-> Informática-> Meu computador '> DCOM config-> Encontre Microsoft Aplicativo-> clique direito (Propriedades) -> Aba Identidade

** se você não consegue encontrar o MS Word, verifique se você está lançando a correta configuração DCOM (64 bit vs 32 bit), dependendo de qual versão do Office que você instalou.

Há duas opções aqui, você pode configurar o Apache para usar Conta do sistema local e marque a caixa de seleção para permitir a interação desktop. Se você fizer isso, então você precisa definir o Identidade para o MS Word para usuário interativo .

Caso contrário, você precisa configurar tanto para o mesmo usuário (Idealmente, o usuário que está logado) como mostrado na imagem.

Bem, você precisará executar "MMC -32" (prompt de comando) para lançar MMC de 32 bits e, em seguida, adicionar Serviços de componentes (File> Adicionar / Remover do menu Snap-ins)

siga um destes instrução:

http://theether.net/download/Microsoft/kb/288366.html

Isso também acontece no Vista com o UAC ativado. Você pode querer tentar definir a identidade DCOM para ser uma conta de administrador e testá-lo novamente.

Eu também recentemente começou a ter este problema em uma caixa XP tentando abrir pastas de trabalho no Excel por meio de serviços de interoperabilidade, mas ainda não encontrou uma solução alternativa. Eu mesmo gostaria de quaisquer outras percepções da comunidade pode ser capaz de jogar lá fora ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top