0

我在 NSIS 安装程序上按以下顺序工作(除其他外):

  1. 使用 UAC 运行提升(这是安装程序所做的其他事情所需要的)
  2. 关闭 explorer.exe
  3. 启动 explorer.exe(使用 Exec 命令)
  4. 启动已安装的可执行文件,以与启动相同的用户身份运行(使用 Exec 命令)

一切正常。

现在安装程序被请求由服务启动。这在资源管理器和已安装的程序都以系统启动时结束。

如何修改安装程序以使程序以当前登录用户身份运行?

我知道如果不是第 2-3 步,我可以使用 explorer 启动我的可执行文件(这可行!),但这不符合我的需要,因为我还需要以当前用户身份停止和启动 explorer.exe。

知道如何做到这一点吗?

4

1 回答 1

0

如果您因为要安装 shell 扩展而重新启动 Explorer,那么这是一个有缺陷的想法。可以随时在任何进程中加载​​ shell 扩展(GetOpenFilename() 等)。您应该重命名正在使用的文件,稍后使用 FILE_FLAG_DELETE_ON_CLOSE 和/或 MoveFileEx 将其删除。

如果您出于其他原因重新启动 Explorer(为什么?),最好使用来自 OpenProcessToken 的令牌(或 WTSQueryUserToken,如果您无法获得 Explorer 令牌)重新启动它

于 2013-10-25T22:19:44.143 回答