【发布时间】:2016-04-25 22:48:42
【问题描述】:
我在 Windows Server 2012 上运行。我有一个创建多个进程的服务,其中一个是 GUI 客户端。高层流程如下:
- 服务运行启动器 exe
- 启动器 exe 启动 AutoIT 编译的 exe
- AutoIT 编译的 exe 启动一个 winform exe
winform exe 做了两件事: 一种。它在程序启动时将文件写入磁盘(test.log) 湾。它等待键盘按“c”将第二个文件写入磁盘(test2.log)
AutoIT 脚本做了两件事: 一种。它启动所说的winform exe 湾。它休眠 5 秒,然后发送“c”(发送命令)
如果我开始手动运行此链(从第 2 步开始) - 一切正常,并且正在创建 2 个文件。我想这是因为我有一个交互式会话(特别是 2 次),所以这里不费吹灰之力。但是,如果我从服务中运行它,则所有内容都在会话 0 中运行(我使用 ProcessExplorer 验证了这一点),但只写入了第一个文件。意思是,winform exe 没有读取击键信息。
我阅读了有关 Session 0 隔离的信息,这意味着来自其他会话的用户输入无法与在会话 0 中运行的程序(服务)交互。但是,现在提到的所有进程都在同一个会话 0 中运行。所以我不知道为什么我的应用程序没有得到键盘敲击?有什么解决方法吗?请注意,在不同的会话下运行可能是不可能的,因为服务器必须在没有用户登录的情况下运行,据我所知,如果不登录系统,您无法自己启动会话。
感谢任何帮助。 谢谢!
【问题讨论】:
标签: windows winforms session ui-automation