我正在尝试编写自动化测试,以确保我的程序的安装程序正常工作。
该程序可以为所有用户(需要管理员权限)或当前用户(不需要管理员权限)安装。该程序还可以自动更新自身,这在某些情况下需要管理员权限,而在某些情况下则不需要。
我正在寻找一种方法,我可以在 UAC 对话框上单击“是,允许”进行自动化测试,这样我就可以在许多不同的操作系统上为所有不同的场景编写测试,这样我就可以自信地进行测试我没有破坏任何安装程序的更改。
显然,安装程序本身无法做到这一点。但是,我控制了整个机器,并且可以轻松地启动某种具有管理权限的守护进程,测试程序可以建立一个套接字连接,以请求它“现在请在 UAC 上单击确定”。
在寻找有关 UAC 的类似问题时,我实际上想出了如何做到这一点。您可以执行以下操作:
此时,您在 Winlogon(安全)桌面上的登录会话中有一个以 SYSTEM 身份运行的帮助程序进程。从这里您可以使用某种 IPC 机制从您的自动化测试程序到帮助程序进行通信。在 helper 进程中你可以通过 EnumDesktopWindows 来找到 UAC 提示。这是我所接受的;我实际上并没有尝试模拟单击“是”或“否”,但我看不出它为什么不起作用的任何原因。另外,我只在 Windows 7 32 位上测试过;我相信 UAC 架构与 Vista 相同,但我没有对其进行测试。
我花了一段时间才弄明白这一切;如果你愿意,我可以提供一些代码。
编辑:作为后续,我添加了代码以使用 FindWindow() 找到“是”按钮,并且我能够成功地向它发送一条 BM_CLICK 消息;UAC 提示消失,应用程序被允许运行。
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |