我有一个以普通用户身份运行的应用程序和一个作为本地系统运行的服务。我希望应用程序能够告诉服务再次启动应用程序,一旦服务完成了其他一些事情。(所以应用程序不会在服务执行它的“事情”时运行。)为了让服务能够以第一次启动它的用户身份启动应用程序,它需要一个用户令牌。应用程序在退出之前将令牌发送到服务,但在服务尝试使用它时令牌/句柄无效。(它用它做的第一件事是 DuplicateTokenEx 获取主令牌。)
用户令牌是否始终只在调用 OpenProcessToken 的进程中有效?
有没有其他方法可以做到这一点?我不希望用户必须使用 logonuser “登录”到应用程序。那将是愚蠢的。我想我可以将“explorer.exe”的进程句柄从应用程序移交给服务,服务可以使用它来获取用户令牌,但这需要 PROCESS DUP HANDLE 访问权限。我对那个解决方案并不感到兴奋,但也许这是这样做的方法?