我有一个时髦的情况,某个批处理类型的应用程序在控制台上运行时正常工作(通过RDP或物理登录到盒子),但在非控制台上通过RDP运行时无法正常工作会话,或者就此而言,当由Windows任务计划程序执行时。
我知道如何通过检查SESSIONNAME环境变量以编程方式确定我的进程是否在控制台上运行。
我的问题是,如果我确定我没有在控制台上运行,我想切换到控制台(由于窗口站限制似乎不太可能),或者更有可能重新启动该过程但强制它在控制台会话上运行。
对于通过Windows任务计划程序启动的进程来说,这确实是个问题,因为它们似乎无法在控制台上运行。
答案 0 :(得分:0)
我认为您通过WTSGetActiveConsoleSessionId,WTSQueryUserToken和CreateProcessAsUser的组合在控制台会话中创建了该进程。