背景: 我们的应用程序的安装需要管理员权限。 安装程序完成后,我们从安装程序调用新安装的程序,然后在管理员窗口中打开它。 (这至少是它在Windows上的工作原理) 然后当我们点击图标来运行程序时,它会打开另一个窗口(因此应用程序的两个实例正在运行 - 这不是一件好事。)
是否可以从批处理文件中运行安装程序和应用程序,以便只有在安装程序关闭后,应用程序才会在非管理员窗口中打开? (在我们的应用程序中,安装程序要求管理员权限,因此批处理文件不应该这样做。)
我尝试使用" Everything.exe" (一个需要管理员权限的优秀应用程序)。
REM Test batchfile for opening two apps
"C:\Program Files (x86)\Everything\Everything.exe"
Notepad.exe
不幸的是,只要管理员权限被授予" Everything.exe",Everything就会在Admin窗口中加载,而Notepad会在非管理员窗口中加载。
安装程序退出后,有没有办法在非管理员窗口中打开应用程序?"
答案 0 :(得分:2)
您应该可以使用MSI(Windows Installer)来安装产品,并提升权利"而不是"管理员权限"。 Windows Installer具有内置机制,可在常规用户登录会话中启动安装程序时模拟管理员的安装事务(必须启用某些策略设置)。
还应该可以运行具有管理员权限的MSI并从具有常规用户权限的最终设置对话框启动应用程序(如果从管理员权限cmd.exe启动,则可能不会 - 不确定,它应该通过右键单击运行来启动msi作为管理员)这是可能的,因为MSI GUI永远不会以提升的权限运行 - 它是由具有提升权限的GUI启动的安装事务。事务完成后,控件将返回到以常规权限运行的GUI。从这里,您可以通过点击按钮启动应用程序。
这种描述有些简化,我将其留在那,因为MSI可能不适合你。