AllocConsole() 没有出现
AllocConsole() doesnt show up
我正在尝试将一个 dll 注入到测试程序中并使用 AllocConsole() 进行调试。
AllocConsole();
然而,控制台不会出现,我意识到我试图注入的程序是 运行 在 SYSTEM 下,我使用的是管理员帐户,所以控制台不会出现在我的桌面上。仅创建了 conhost 进程。
那么...如何让 AllocConsole() 的控制台显示在每个帐户桌面上?
该程序 运行 为 SYSTEM
,很可能它是服务会话(会话 0)中的一项服务 运行。分配控制台并在另一个会话(例如控制台会话)中显示它是不可能的。一个进程不可能有一个在所有会话甚至多个桌面上都可见的 window(或控制台)。
如果您不知道什么是会话隔离,请从这里开始阅读:Application Compatibility - Session 0 Isolation
如果你想输出简单的调试,一个简单的方法是使用OutputDebugString (and use a tool like DbgView读取输出)或写入事件日志。对于更详细的输出,您可以设置命名管道或其他一些进程间通信。
我正在尝试将一个 dll 注入到测试程序中并使用 AllocConsole() 进行调试。
AllocConsole();
然而,控制台不会出现,我意识到我试图注入的程序是 运行 在 SYSTEM 下,我使用的是管理员帐户,所以控制台不会出现在我的桌面上。仅创建了 conhost 进程。
那么...如何让 AllocConsole() 的控制台显示在每个帐户桌面上?
该程序 运行 为 SYSTEM
,很可能它是服务会话(会话 0)中的一项服务 运行。分配控制台并在另一个会话(例如控制台会话)中显示它是不可能的。一个进程不可能有一个在所有会话甚至多个桌面上都可见的 window(或控制台)。
如果您不知道什么是会话隔离,请从这里开始阅读:Application Compatibility - Session 0 Isolation
如果你想输出简单的调试,一个简单的方法是使用OutputDebugString (and use a tool like DbgView读取输出)或写入事件日志。对于更详细的输出,您可以设置命名管道或其他一些进程间通信。