2010-05-13 69 views
3

我正在嘗試編寫自動化測試,以確保我的程序的安裝程序正常工作。測試需要管理權限的程序的安裝步驟

該程序可以安裝所有用戶(需要管理員權限),或爲當前用戶(不需要管理員權限)。該程序還可以自行更新,在某些情況下需要管理員權限,在某些情況下不需要。

我正在尋找一種方法,我可以進行自動化測試,在UAC對話框上單擊「是,允許」,這樣我就可以在許多不同的操作系統上爲所有不同的場景編寫測試,以便我可以當我對安裝程序進行更改時自信,我沒有破壞任何東西。

顯然,安裝程序本身不能這樣做。但是,我控制整個機器,並且可以輕鬆地啓動某種具有管理權限的守護進程,以便testprogram可以建立套接字連接,請求它「請單擊UAC上的OK」。

回答

4

我真的想出瞭如何做到這一點,同時尋找回答關於UAC的類似問題。這裏是你可以做的:

  1. 寫一個服務運行SYSTEM。
  2. 打開登錄會話中運行的winlogon.exe實例的進程標記。
  3. 使用該標記通過CreateProcessAsUser在Winlogon桌面上啓動幫助程序進程。

此時,您在Winlogon(安全)桌面上的登錄會話中有一個輔助進程作爲SYSTEM運行。從這裏你可以使用某種IPC機制從你的自動化測試程序到輔助程序進行通信。在幫助程序中,您可以使用EnumDesktopWindows來查找UAC提示。這就像我接受它一樣;我實際上並沒有嘗試模擬單擊「是」或「否」,但我沒有看到任何原因,它不起作用。另外,我只在Windows 7 32位上進行測試;我相信UAC架構與Vista相同,但我沒有對它進行測試。

我花了一段時間才弄明白這一切;如果你願意,我可以提供一些代碼。

編輯:就像後續我添加代碼使用FindWindow()找到「是」按鈕,我能夠成功地發送它一個BM_CLICK消息; UAC提示消失,應用程序被允許運行。

0

另一種解決方案可能是turn UAC off

+0

這會毀了測試。在某些情況下,我需要測試它是否符合預期,並且在其他情況下測試結果並不像預期的那樣。 – 2010-05-13 17:18:20

0

最不壞的解決方案,到目前爲止,我發現是運行在VMware會話測試,並控制鼠標/鍵盤槽VMware的SDK。很想聽聽其他解決方案

0

遠程桌面或運行它作爲訪客虛擬機(使用虛擬PC或任何其他,只是不啓動它)。這也是截圖或視頻的最佳方式的UAC提示。

相關問題