簡體   English   中英

從系統服務啟動的NSIS安裝程序中以登錄用戶身份啟動應用程序

[英]Start application as logged user from NSIS installer launched by system service

我正在按以下順序(除其他事項外)在NSIS安裝程序上工作:

  1. 使用UAC運行高架(安裝程序進行其他操作需要使用)
  2. 關閉explorer.exe
  3. 啟動explorer.exe(使用Exec命令)
  4. 啟動安裝的可執行文件,並以與啟動時相同的用戶身份運行(使用Exec命令)

一切都很好。

現在,服務要求安裝程序啟動。 結束於資源管理器,已安裝的程序作為SYSTEM啟動。

如何修改安裝程序以使程序以當前登錄用戶身份運行?

我知道是否不是第2-3步,我可以使用Explorer啟動我的可執行文件(這可行!),但這不符合我的需要,因為我還需要以當前用戶身份停止並啟動explorer.exe。

知道如何實現嗎?

如果由於要安裝Shell擴展而重新啟動Explorer,則這是一個有缺陷的想法。 Shell擴展可以隨時在任何進程中加載​​(GetOpenFilename()等)。 您應該重命名正在使用的文件,並稍后使用FILE_FLAG_DELETE_ON_CLOSE和/或MoveFileEx將其刪除。

如果由於其他原因(為什么?)重新啟動Explorer,最好使用OpenProcessToken中的令牌(如果無法獲得Explorers令牌,則使用WTSQueryUserToken)重新啟動它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM