19

Chúng tôi có một Dịch vụ Windows chạy trên Máy chủ 2003. Nó mở ra một tài liệu Word nguồn bằng cách sử dụng Word Interop và sau đó làm một số công cụ với nó. Nó cũng tương tự như vậy với các tệp Excel và PowerPoint.Tự động hóa Office qua Dịch vụ Windows trên Máy chủ 2008

Gần đây, chúng tôi đã thử di chuyển dịch vụ này lên máy tính Windows 2008 Server và đang gặp sự cố thực sự với máy.

COMException tại Microsoft.Office.Interop.Excel.Workbooks.Open COMException tại Microsoft.Office.Interop.Word.Documents.Open

tôi nhận được các ngoại lệ trên khi dịch vụ cửa sổ đang chạy trên 2008 Server. Nhìn vào Trình quản lý tác vụ, ứng dụng không tải được, nhưng sau đó đóng lại sau đó.

Tôi đã đọc những thứ về Vista và Server 2008 không có phiên làm việc nữa, và đã thử thay đổi thuộc tính bảo mật Office DCOM tương ứng, bao gồm thay đổi nhận dạng người dùng đang chạy chúng thành Tích hợp nhưng không có kết quả.

Có ai biết điều này có thể xảy ra không? Đây là một khía cạnh cơ bản của hệ thống của chúng tôi và vì vậy chúng tôi cần để có thể làm điều này.

Cảm ơn

+2

Bạn có thể đã biết điều này, nhưng việc chạy Word trên máy chủ không được Microsoft hỗ trợ và _might_ vi phạm các điều khoản của giấy phép. – Martin

Trả lời

57

Tôi đã gặp sự cố khi tự động hóa Office từ Dịch vụ Windows trong Windows Server 2008, mặc dù hoạt động tốt trong Windows Server 2003. vấn đề cũng xảy ra tại cuộc gọi mở, vì vậy nó có thể là cùng một vấn đề.

Tôi đã thử theo lời khuyên do H Ogawa đưa ra trong this MSDN thread và dường như hoạt động. Đó là kỳ lạ, nhưng kudos để ông Ogawa để khám phá nó.

Tóm tắt của 'Ogawa Hack': tạo một thư mục máy tính để bàn cho cấu hình hệ thống, như:

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

, nếu chạy trên một máy 64-bit, tạo nhau, như :

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

Ngoài ra, thư mục cần có quyền ghi cho bất kỳ người dùng nào là "lái xe" Office.


[Edit: chỉnh URL link]

[Chỉnh sửa 2: làm rõ rằng trên 64-bit Windows, bạn cần cả hai thư mục, không chỉ là WOW64 một]

+5

Xin lưu ý: nếu ứng dụng của bạn được biên dịch thành x86, hãy sử dụng thư mục x86 (ngay cả khi bạn đang chạy trên máy x64) C: \ Windows \ System32 \ config \ systemprofile \ Desktop –

+0

Điều này chỉ mất 4 giờ để gỡ lỗi . Cảm ơn một loạt vì đã cứu tôi. – troelskn

+0

Tôi không có ý tưởng làm thế nào nó hoạt động ...... hoạt động như quyến rũ :) –

0

Điều này cũng xảy ra trên Vista với UAC được bật. Bạn có thể muốn thử thiết lập danh tính DCOM thành tài khoản quản trị viên và kiểm tra lại.

Tôi cũng vừa mới bắt đầu gặp sự cố này trên hộp XP đang cố gắng mở sổ làm việc trong Excel thông qua các dịch vụ interop, nhưng chưa tìm được giải pháp thay thế. Bản thân tôi cũng muốn có bất kỳ thông tin chi tiết nào khác mà cộng đồng có thể ném ra đó ...

1

Vâng, bạn sẽ cần phải chạy "MMC -32" (command prompt) để khởi động 32-bit MMC và sau đó thêm Component Services (file> Add/đơn Remove Snap-ins')

sau đó làm theo một trong những hướng dẫn:

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

+0

Gợi ý của bạn cho "mmc 32" và câu trả lời của A.O. đã lưu lại ngày của tôi. –

3

Nếu bạn đang sử dụng Apache, bạn cũng có thể cần phải làm theo các bước sau để có được MS Word hoạt động bình thường (cùng với tất cả những gì được nêu trong câu trả lời khác):

Dưới đây là một ảnh chụp màn hình cho thấy hai hộp thoại bạn sẽ cần phải đưa lên: enter image description here

Đối với Apache:

Services-> Apache-> Right Click (Properties) -> Log On Tab

MS Word:

Launch dcomcnfg.exe-> Console Root-> Hợp phần Services-> Computers-> My dụng vi tính> DCOM Config-> Tìm Microsoft dành cho ứng dụng> Right Click (Properties) -> nhận dạng Tab

** nếu bạn không thể tìm thấy MS Word, hãy đảm bảo bạn đang khởi chạy Cấu hình DCOM chính xác (64 bit so với 32 bit) tùy thuộc vào phiên bản Office bạn đã cài đặt.

Có hai tùy chọn ở đây, bạn có thể đặt Apache sử dụng Tài khoản hệ thống cục bộ và chọn hộp kiểm để TẤT CẢ tương tác trên màn hình. Nếu bạn làm điều này thì bạn cần phải đặt Mã số cho MS Word thành Người dùng tương tác.

Nếu không, bạn cần đặt cả hai thành cùng một người dùng (Lý tưởng nhất là người dùng đã đăng nhập) như được hiển thị trong hình.