从会话0中升级程序

Escalate program out of Session 0

本文关键字:程序 会话      更新时间:2023-10-16

我的程序使用DXGI API与DXGI输出和适配器交互。

我主要使用命令行工具来开发它,因为我还不需要任何GUI。

我还通过Bitvise SSH服务器访问我的PowerShell实例-无论何时我通过此PowerShell实例运行已编译的program.exe,据我所知,这意味着我的程序正在会话0中运行,也意味着我只能访问DXGI功能的一个子集(请参阅在会话0进程中使用Direct3D)。

有什么办法可以绕过这个要求吗?有没有一个标志我可以传递给program.exe,以某种方式将其从会话0中弹出?

如果不是通过WinAPI,并且如果您可以使用并启动额外的exe来启动程序.exe,我认为您可以尝试使用psexec实用程序:http://technet.microsoft.com/en-us/sysinternals/bb897553.

我想周围也有类似的公用事业。

编辑:您也可以使用psexec在本地框上启动进程,请参阅"计算机"参数的参考:

计算机指示PsExec在指定的一台或多台计算机上运行应用程序如果省略计算机名,PsExec将在本地系统上运行应用程序,并且如果输入计算机名"\*",PsExec将在当前域中的所有计算机上运行该应用程序。

另一个编辑我能够在我的会话中启动notepad.exe,模仿你可能拥有的东西:

psexec -i 0 psexec -s -i 1 C:windowssystem32Notepad.exe

此命令行启动使用psexec在会话0(在系统帐户下)中启动自己,然后新的psexec调用notepad.exe在我的会话(会话1)中显示。它确实有效。当然,您需要管理员权限才能运行这些命令。