【问题标题】:How to open the app in non-admin window after the installer run with Admin privileges安装程序以管理员权限运行后如何在非管理员窗口中打开应用程序
【发布时间】:2014-05-30 23:11:43
【问题描述】:

背景: 安装我们的应用程序需要管理员权限。 安装程序完成后,我们从安装程序中调用新安装的程序,它会在管理窗口中打开。 (这至少是它在 Windows 上的工作方式) 然后当我们点击图标运行程序时,它会打开另一个窗口(因此应用程序的两个实例正在运行——这不是一件好事。)

是否可以从批处理文件中同时运行安装程序和应用程序,以便只有在安装程序关闭后,应用程序才会在非管理窗口中打开? (在我们的应用程序中,安装程序要求管理员权限,因此批处理文件不应该这样做。)

我尝试使用“Everything.exe”(一个需要管理员权限的优秀应用)对此进行试验。

REM Test batchfile for opening two apps
"C:\Program Files (x86)\Everything\Everything.exe"
Notepad.exe

不幸的是,一旦将管理员权限授予“Everything.exe”,所有内容都会在管理员窗口中加载,而记事本则在非管理员窗口中加载。

有没有办法在安装程序退出后在非管理员窗口中打开应用程序?"

【问题讨论】:

  • 批量使用start /wait,但是批量真的是正确的解决方案吗?
  • 没有可靠的方法。对于管理员,您可以从令牌中删除额外的权限,但对于在管理员令牌下运行的非管理员,它将不起作用。但是这些都不适用于批处理文件。这解释了它并试图给你一个 C 中的过程来帮助你。 blogs.msdn.com/b/oldnewthing/archive/2013/11/18/10468726.aspx
  • 也许 runas 命令可以帮助您解决问题。鲁纳斯 /?
  • Hanno Binder,我刚刚尝试了您的建议,即使用“如何等待进程终止以批量执行另一个进程 –” 不幸的是它没有奏效。我相信原因是第一个进程在管理窗口中运行,而第二个没有。第二个在非管理员窗口中打开,无需等待第一个存在。

标签: windows batch-file installation admin


【解决方案1】:

您应该能够使用 MSI (Windows Installer) 来安装具有“提升权限”而不是“管理员权限”的产品。 Windows Installer 具有一种内置机制,可在常规用户登录会话中启动安装程序时模拟安装事务的管理员(必须启用一些策略设置)。

还应该可以使用管理员权限运行 MSI,并使用常规用户权限从最终设置对话框启动应用程序(如果从管理员权限 cmd.exe 启动,则可能不会 - 不确定,它应该通过右键单击以管理员身份运行启动 msi)这是可能的,因为 MSI GUI 从不以提升的权限运行 - 它是由 GUI 启动的安装事​​务,具有提升的权限。事务完成后,控件返回到以常规权限运行的 GUI。从这里您可以通过单击按钮启动应用程序。

此描述有些简化,我将保留它,因为 MSI 可能不适合您。

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 2020-06-04
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    相关资源
    最近更新 更多