Testing 需要管理权限的程序的测试安装过程

Testing 需要管理权限的程序的测试安装过程,testing,uac,Testing,Uac,我正在尝试编写自动测试,以确保我的程序的安装程序工作正常 该程序可以为所有用户安装(需要管理员权限),也可以为当前用户安装(不需要管理员权限)。该程序还可以自动更新自身,在某些情况下需要管理员权限,在某些情况下不需要管理员权限 我正在寻找一种方法,在UAC对话框上单击“是,允许”进行自动测试,这样我就可以在许多不同的操作系统上为所有不同的场景编写测试,这样当我更改安装程序时,我就可以确信我没有破坏任何东西 显然,安装程序进程本身无法做到这一点。但是,我可以控制整个机器,并且可以轻松地启动某种具有

我正在尝试编写自动测试,以确保我的程序的安装程序工作正常

该程序可以为所有用户安装(需要管理员权限),也可以为当前用户安装(不需要管理员权限)。该程序还可以自动更新自身,在某些情况下需要管理员权限,在某些情况下不需要管理员权限

我正在寻找一种方法,在UAC对话框上单击“是,允许”进行自动测试,这样我就可以在许多不同的操作系统上为所有不同的场景编写测试,这样当我更改安装程序时,我就可以确信我没有破坏任何东西


显然,安装程序进程本身无法做到这一点。但是,我可以控制整个机器,并且可以轻松地启动某种具有管理权限的守护进程,测试程序可以与之建立套接字连接,请求它“现在请单击UAC上的ok”.

另一种解决方案可能是

到目前为止,我发现最不坏的解决方案是在VMWare会话中运行测试,并通过VMWare sdk控制鼠标/键盘。很想听听其他解决方案

将桌面远程连接到它,或者将它作为来宾虚拟机运行(使用虚拟PC或其他任何东西,只是不要启动到它)。这也是拍摄UAC提示符屏幕截图或视频的最佳方式。

我在回答一个关于UAC的类似问题时,实际上已经知道了如何做到这一点。以下是您可以做的:

  • 编写一个作为系统运行的服务
  • 打开登录会话中运行的winlogon.exe实例的进程令牌
  • 使用该令牌通过CreateProcessAsUser在Winlogon桌面上启动帮助程序进程
  • 此时,您在Winlogon(安全)桌面上的登录会话中有一个助手进程作为系统运行。从这里,您可以使用某种IPC机制从自动测试程序与助手进程进行通信。在助手进程中,您可以枚举DesktopWindows以查找UAC提示。这就是我所能做到的;我实际上并没有试图模拟单击“是”或“否”,但我看不出它不起作用的任何原因。而且,我只在Windows7上测试了32位;我相信UAC架构与Vista完全相同,但我没有对其进行测试

    我花了一段时间才弄明白这一切;如果你愿意,我可以提供一些代码


    编辑:作为后续工作,我添加了使用FindWindow()查找“Yes”按钮的代码,并成功地向其发送了一条BM_CLICK消息;UAC提示符消失,应用程序被允许运行。

    这将破坏测试。我需要测试,在某些情况下,它确实会像预期的那样出现,在其他情况下,它不会像预期的那样出现。