Windows services “Windows程序”;“不可用”;对于由服务派生的进程
我试图使用Windows services “Windows程序”;“不可用”;对于由服务派生的进程,windows-services,psexec,wndproc,windows-messages,spy++,Windows Services,Psexec,Wndproc,Windows Messages,Spy++,我试图使用psexec在远程机器上生成一个进程(出于自动测试目的),并注意到生成的进程没有正确响应消息(WM_GETOBJECT,但这完全是另一个问题)。我打开了spy++,试图找出原因,但我无法记录任何进入进程窗口的消息。窗口属性还指示该窗口的“Windows进程”为“不可用”: 我认为这是Windows服务的一种行为,因为psexec。我使用相同的凭据登录到这两台计算机,因此我认为这不是用户安全问题,而是与服务相关的行为 作为一个健全的检查,我写了一个快速独立的服务器和客户端远程执行一个程
psexec
在远程机器上生成一个进程(出于自动测试目的),并注意到生成的进程没有正确响应消息(WM_GETOBJECT
,但这完全是另一个问题)。我打开了spy++
,试图找出原因,但我无法记录任何进入进程窗口的消息。窗口属性还指示该窗口的“Windows进程”为“不可用”:
我认为这是Windows服务的一种行为,因为psexec
。我使用相同的凭据登录到这两台计算机,因此我认为这不是用户安全问题,而是与服务相关的行为
作为一个健全的检查,我写了一个快速独立的服务器和客户端远程执行一个程序,一切都按预期进行:窗口程序不再“不可用”,我可以监视消息
我在所有测试中都使用了普通的Windows计算器(calc
),即:
psexec.exe -i \\other-machine calc
我的问题:有人能确认、解释和/或引用为什么我看不到由服务产生的进程的消息队列吗?还有解决这个问题的方法吗?我宁愿使用
psexec
而不是我的自定义解决方案。如果您还可以解释为什么在这种情况下WM_GETOBJECT
也不返回我的自定义UI自动化提供程序,这是我的原始问题,那么您就有好处了。由于psexec使用Windows服务启动可执行文件,您可能会遇到问题。您的应用程序是否在会话0中启动?可能Spy++在访问它时遇到问题。我运行的是XP,所以我不认为这是我的问题。无论如何,为了检查,我在任务管理器中启用了“会话ID”列,它显示calc为“0”。但是,系统或我的用户登录的所有其他应用程序/服务也在会话0中。