2009-11-04 30 views
9

Tôi có một ứng dụng .NET nhỏ mà tôi đang chạy trong Windows 2008 Server thông qua Task Scheduler. Ứng dụng này cần mở một tệp excel và sau đó lưu nó dưới dạng csv. Tác vụ không thành công khi tôi cố gắng mở sổ làm việc. Nếu tôi chạy nó theo cách thủ công mà không có trình lập lịch nhiệm vụ đang chạy nó, ứng dụng hoạt động tốt.Cách chạy tác vụ Windows 2008 từ bộ lập lịch với "tương tác với máy tính để bàn"

Tôi có cài đặt là "Chạy với đặc quyền cao nhất" và có "Chạy người dùng thời tiết được đăng nhập hay không" đã chọn.

Tôi đoán rằng quy trình này cần tương tác với máy tính để bàn tương tự như kiểm tra cờ "tương tác với máy tính để bàn" trên một dịch vụ. Nhưng tôi đã không thể tìm thấy một điều tương tự cho các nhiệm vụ theo lịch trình.

Dưới đây là mã được không: (nó không thành công trên cuộc gọi workbook.open)

public static void ConvertExcelToCsv(string source, string destination) 
{ 
    if (File.Exists(destination)) File.Delete(destination); 

    Application xl = new Application(); 

    try 
    { 
     Workbook workbook = xl.Workbooks.Open(source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
     Worksheet ws = (Worksheet)workbook.Sheets[1]; 
     ws.SaveAs(destination, XlFileFormat.xlCSV, Type.Missing, Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing,true); 

     Marshal.ReleaseComObject(ws); 
    } 
    finally 
    { 
     xl.DisplayAlerts = false; 
     xl.Quit(); 

     Marshal.ReleaseComObject(xl);     
    } 

} 

Trả lời

8

Tôi đã có vấn đề tự động hóa văn phòng từ một dịch vụ Windows trong môi trường Windows Server 2008, mặc dù rằng hoạt động tốt dưới 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, là một trong hai

C:\Windows\SysWOW64\config\systemprofile\Desktop, hoặc

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

... tùy thuộc vào việc bạn có 64-bit Các cửa sổ.

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.

[Chỉnh sửa: URL liên kết đã sửa]

+1

Nó hoạt động! Thats điên, tôi sẽ không bao giờ tìm thấy cảm ơn bạn. Ngoài ra, liên kết ở trên không chính xác, bạn có thể tìm thấy bài viết được mô tả tại đây: http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91 – Kelly

+0

Bạn cũng có thể cần phải vô hiệu hóa UAC cho tài khoản người dùng lái xe tự động hóa văn phòng trên máy chủ - đó là những gì là các kink cuối cùng cho tôi. –

+0

Tôi đã làm theo các giải pháp không hiệu quả với tôi. Tôi đã thực hiện một số thay đổi đối với danh tính dcom của 'Ứng dụng Microsoft Excel' đã làm việc cho tôi. Tôi đã thay đổi danh tính thành 'Người dùng này' và cung cấp thông tin đăng nhập tài khoản Quản trị viên. Điều này làm việc tốt cho tôi và Sharepoint Webpart của chúng tôi bắt đầu làm việc theo cách của nó. –

Các vấn đề liên quan