2009-11-04 55 views
9

我有一個小的.NET應用程序,我通過任務計劃程序在Windows 2008 Server下運行。這個應用程序需要打開一個excel文件,然後將其保存爲csv。當我嘗試打開工作簿時,任務失敗。如果我在沒有任務調度程序運行的情況下手動運行它,該應用程序工作正常。如何使用「與桌面交互」從調度程序運行Windows 2008任務

我已將它設置爲「以最高權限運行」並已選中「運行天氣用戶已登錄或未登錄」。

我的猜測是這個過程需要與桌面進行交互,類似於檢查服務上的「與桌面交互」標誌。但是我一直無法爲計劃任務找到類似的東西。

這裏是失敗的代碼:(失敗的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);     
    } 

} 

回答

8

我已經運行在Windows Server 2008從Windows服務自動化辦公,即使是在正常工作的問題Windows Server 2003.在打開呼叫時也會出現此問題,因此可能會出現同樣的問題。

我試着按照H小川在this MSDN thread給出的建議,它似乎工作。這是奇怪的,但小川先生髮現它的榮譽。

總結了「小川哈克」的:創建系統配置文件的桌面文件夾,因爲無論是

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

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

...取決於你是否擁有64位視窗。

此外,該文件夾需要寫入權限,無論用戶在「駕駛」Office。

[編輯:更正鏈接網址]

+1

它的工作原理!這太瘋狂了,我永遠也找不到那個謝謝。另外上面的鏈接是不正確的,你可以找到這裏描述的文章:http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91 – Kelly 2009-11-05 15:16:45

+0

你也可以需要爲驅動服務器上的Office自動化的用戶帳戶禁用UAC - 這對我來說是最後的結局。 – 2011-02-15 22:52:35

+0

我跟着沒有爲我工作的解決方案。我對爲我工作的「Microsoft Excel應用程序」的dcom標識做了一些更改。我已將身份更改爲「此用戶」並提供了管理員帳戶憑據。這對我來說工作得很好,我們的Sharepoint Webpart開始按照它應該的方式工作。 – 2011-02-15 22:52:52

相關問題