Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 从系统服务启动的NSIS安装程序以登录用户身份启动应用程序_Windows_Service_Installation_Nsis - Fatal编程技术网

Windows 从系统服务启动的NSIS安装程序以登录用户身份启动应用程序

Windows 从系统服务启动的NSIS安装程序以登录用户身份启动应用程序,windows,service,installation,nsis,Windows,Service,Installation,Nsis,我在NSIS安装程序上的工作(除其他外)顺序如下: 使用UAC运行提升(这是由 (安装程序) 关闭explorer.exe 启动explorer.exe(使用 Exec命令) 启动已安装的可执行文件,以相同方式运行 用户作为启动者(使用Exec命令) 一切都很好 现在,服务请求启动安装程序。 这将在explorer和已安装的程序作为系统启动时结束 如何修改安装程序以使程序以当前登录用户的身份运行 我知道如果不是步骤2-3,我可以使用explorer启动我的可执行文件(这很有效!),但这不符合我的

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

  • 使用UAC运行提升(这是由 (安装程序)
  • 关闭explorer.exe
  • 启动explorer.exe(使用 Exec命令)
  • 启动已安装的可执行文件,以相同方式运行 用户作为启动者(使用Exec命令)
  • 一切都很好

    现在,服务请求启动安装程序。 这将在explorer和已安装的程序作为系统启动时结束

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

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


    你知道如何才能做到这一点吗?

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


    如果由于其他原因(为什么?)重新启动Explorer,最好使用OpenProcessToken中的令牌(如果无法获取Explorer令牌,则使用WTSQueryUserToken)重新启动它