2013-06-26 54 views
1

我正在爲持續集成服務器設置測試節點。它將執行應用程序的GUI測試。因此,它會在運行其他交互式測試之前獲取生成的安裝程序包並以靜默方式安裝該應用程序。但有一個問題:UAC。創建並立即運行一次Windows任務(作爲管理員)

因爲我們不想禁用UAC來維護真實的測試環境,所以需要繞過一次來設置應用程序。有很多方法可以做到這一點,一個流行的似乎使用Windows任務調度器。任務可以作爲普通用戶添加,並配置爲以管理員身份運行,無需進一步確認。我可以使用schtasks /create命令,但它的參數不清楚。另外,/?幫助中的參數值似乎在我的系統中被翻譯成德語,我相信(並希望)這是一個錯誤,實際值應該用英文指定。另外,我只想創建一個立即執行它的任務,然後刪除它並繼續執行其他活動(全部在批處理文件中)。 schtasks電話如何看起來像這樣?我會像這樣的東西開始,但它是不完整的:

schtasks /create /tn "Testaufgabe" /tr "setup.exe" /sc EINMAL /it /np /z /rl /f 

PS:哦,我需要等到啓動的應用程序已完成,直到我可以繼續執行其它任務。所以程序調用必須是同步的,而不是在後臺。我已經搜索了幾個小時的網絡,但似乎無法找到一種方法來實現這一點。 UAC似乎不適用於這種情況。但是我們在測試用例中需要它,因爲這就是用戶所擁有的。

更新:您不能使用任務計劃程序API來註冊將以最高權限運行的任務。這隻有在創建任務時擁有管理員權限的情況下才有可能,這在我的情況下沒有用。所以我認爲我需要專門使用schtasks.exe。

回答

2

它不起作用。我只是想出瞭如何從命令行的XML定義文件創建一個任務。如果任務想要使用管理權限執行並將其註冊爲無效管理員,則失敗。所以schtasks是無法繞過UAC確認的 - 只有Task Scheduler GUI是。實際上,這個窗口mmc.exe的進程已經以管理員身份啓動(沒有UAC確認),所以很明顯在那裏創建這樣的管理任務是可能的。

我放棄繞過UAC確認。相反,我只需在不知道密碼的其他本地管理員帳戶下啓動安裝可執行文件(可能爲psexec)。它不會擁有測試用戶的個人資料和環境,並且可能會做一些細節上的改變,但畢竟這是一種應該起作用的方式。

相關問題