C# 如何获取以用户身份运行的Windows 7应用程序的MainWindowHandle<;foo>;从作为本地系统运行的服务中?
我创建了一个作为本地系统用户运行的服务。此服务使用本机互操作和CreateProcessAsUser()方法(以当前登录用户而不是本地系统的身份运行)启动并监视Silverlight浏览器外应用程序。我能够获得派生进程的句柄,并执行诸如Kill()之类的操作,但是,我意识到服务无法获得子应用程序主窗口的句柄,因为子应用程序以不同的用户身份运行。我在Windows7上运行 我的最终目标是在进程停止响应时正确响应(即Process.responding==false),这样我就可以终止应用程序并重新启动它。但是,Process.Responding需要进程主窗口的句柄(确切地说是Process.MainWindowHandle),但是在这种情况下,Process.MainWindowHandle始终返回0 我被难住了。在Win7中,一个用户是否有办法获得作为另一个用户运行的进程的窗口句柄C# 如何获取以用户身份运行的Windows 7应用程序的MainWindowHandle<;foo>;从作为本地系统运行的服务中?,c#,windows,windows-services,pinvoke,hwnd,C#,Windows,Windows Services,Pinvoke,Hwnd,我创建了一个作为本地系统用户运行的服务。此服务使用本机互操作和CreateProcessAsUser()方法(以当前登录用户而不是本地系统的身份运行)启动并监视Silverlight浏览器外应用程序。我能够获得派生进程的句柄,并执行诸如Kill()之类的操作,但是,我意识到服务无法获得子应用程序主窗口的句柄,因为子应用程序以不同的用户身份运行。我在Windows7上运行 我的最终目标是在进程停止响应时正确响应(即Process.responding==false),这样我就可以终止应用程序并重新
提前感谢您提供的所有帮助。不,这是不可能的。出于安全原因,Windows服务与用户模式应用程序完全隔离。如果你能得到一个窗口的句柄,你就可以操纵这个窗口,或者与之交互,留下一个巨大的安全漏洞 有关更多信息,请访问: