Delphi ShowWindow不支持';窗口在系统帐户下运行时无法工作
我目前正在使用这段代码来还原最小化的窗口,当我尝试还原在我自己的用户帐户下运行的窗口时,它可以完美地工作Delphi ShowWindow不支持';窗口在系统帐户下运行时无法工作,delphi,winapi,showwindow,Delphi,Winapi,Showwindow,我目前正在使用这段代码来还原最小化的窗口,当我尝试还原在我自己的用户帐户下运行的窗口时,它可以完美地工作 ShowWindow(wHandle、SW\u还原); 当我尝试还原在系统帐户下运行的窗口时,问题就出现了。我发现ShowWindow()总是向我返回一个假值。此外,在我的清单中,我尝试将其设置为“Requires Administrator”和“As Invoker”,但仍然会产生相同的结果 是否还有另一个功能类似于ShowWindow(),能够还原在系统帐户下运行的窗口?您可以在用户应
ShowWindow(wHandle、SW\u还原);
当我尝试还原在系统帐户下运行的窗口时,问题就出现了。我发现ShowWindow()
总是向我返回一个假值。此外,在我的清单中,我尝试将其设置为“Requires Administrator”和“As Invoker”,但仍然会产生相同的结果
是否还有另一个功能类似于ShowWindow(),能够还原在系统帐户下运行的窗口?您可以在用户应用程序中创建具有“本地系统”权限的线程。然后在线程中执行
ShowWindow
一些步骤:
OpenProcessToken
和DuplicateTokenEx
来创建
本地系统令牌SetTokenInformation
将令牌会话ID更改为
匹配程序的DuplicateHandle
来创建令牌的句柄对于@fpiette的评论,显示了更多细节。您可能不得不这样做,但在随机用户的桌面上以本地系统帐户运行GUI应用程序可能是您需要解决的真正问题。似乎没有令人信服的理由这么做。我实际上正在编写一个程序来帮助我调用一个外部应用程序,如果这个应用程序已经在运行,我想恢复窗口并将其提前。但我面临的问题是,外部应用程序倾向于在系统上运行,而不是在我自己的用户名上运行。在系统帐户下运行应用程序,它就会工作。设计这样一个解决方案的方法可能是编写一个在系统帐户下运行的Windows服务,并编写一个前端GUI应用程序,向该服务发送命令。@i可检测只有创建目标窗口的进程才能为自己调用
ChangeWindowMessageFilter/Ex()
。你不能为别人的窗户打电话。“在随机用户的桌面上以本地系统帐户运行GUI应用程序可能是您需要解决的真正问题”-同意。出于安全原因,低权限进程被阻止与高权限进程进行各种交互。