2013-10-22 81 views
0

我已經搜索了Stack Overflow站點,以瞭解與Outlook關閉 相關的問題。有一些點擊,但似乎沒有描述我想要做的事情 。如何從任務計劃程序運行時使用VBScript關閉Outlook

我試圖解決的問題是如何自動和無人值守備份Outlook數據庫 。在複製.pst文件之前,需要關閉Outlook(如果它運行的是 )。

我在(www.howto-outlook.com/howto/closeoutlookscript.htm) 上找到了一個VBScript,這看起來像我所需要的。但從Windows任務計劃程序從 啓動時,我無法啓動它。

我在Windows 8索尼筆記本電腦上運行。

在執行.pst文件備份之前,我的VBScript應關閉Outlook。 代碼存儲在CloseOutlookVerify.vbs中。

下面是從CloseOutlookVerify.vbs違規代碼:

Set colProcessList = objWMIService.ExecQuery _ 
    ("Select * from Win32_Process Where Name = 'Outlook.exe'") 
For Each objProcess in colProcessList 
    Set objOutlook = CreateObject("Outlook.Application") 

' The above line fails with ERR = 70 - Permission denied 

    objOutlook.Quit 
    Closed = 1 
Next 
  • 該腳本正常工作,如果我在該.vbs雙擊從Windows Explorer文件 。
  • 它工作正常,如果我從DOS命令提示符窗口運行它。
  • 它通過Windows任務計劃程序運行時失敗,出現err = 70。

因此,從命令提示符 與任務調度程序運行此腳本有什麼不同?我怎樣才能讓它在任務調度器運行 時正常工作?

僅供參考 - 我用C和Unix shell語言編寫了我的生活編程,但這是我在Windows環境中第一次接觸VBS。

非常感謝您提供的任何專業知識。

+0

你設置了哪個用戶帳戶來運行該任務? – admdrew

回答

1

我認爲這是因爲impersonationLevel尚未設置。試試這個:

 Set objWMIService = GetObject("winmgmts:" _ 
     & "{impersonationLevel=impersonate}!\\" & strSysName & "\root\cimv2") 
     Set colProcessList = objWMIService.ExecQuery _ 
     ("Select * from Win32_Process Where Name = 'Outlook.exe'") 
     For Each objProcess in colProcessList 
     objProcess.Terminate() 
     Next 
相關問題