gpt4 book ai didi

c# - 从 Windows 服务启动浏览器

转载 作者:可可西里 更新时间:2023-11-01 09:40:52 25 4
gpt4 key购买 nike

我对 Microsoft 世界有点陌生。我读过this回答和许多其他链接,我知道在 Vista 之后,Windows 服务无法与桌面交互。

但是,我遇到了紧急情况,必须快速找到解决方法。我需要我的 Windows 服务以某种方式打开带有 URL 的浏览器(目前任何一种丑陋的 hack 都可以)。答案是:

you need to write a separate agent application, which will be automatically started on user login, and with which your service will communicate. Then the agent can start the browser or do whatever else you need.

有人可以向我解释一下如何以简单的方式做到这一点吗?该服务将如何与该“代理”对话?这个“代理”到底是什么?

如有任何链接或建议,我们将不胜感激。

编辑:目前。我的服务尝试运行以下代码:System.Diagnostics.Process.Start("www.google.com");

后来我发现,这是行不通的

最佳答案

是的,您可以通过服务在桌面上运行代码...问题是在哪个桌面上?因为可能有多个用户同时登录(例如,在 Windows 服务器中,可能有多个用户远程登录)。

如果在您的示例中从服务使用 Process.Start:

System.Diagnostics.Process.Start("www.google.com");

该程序不会出现在任何用户的桌面上,因为该服务不与任何用户的桌面关联。


解决方案是检测哪个用户在本地登录,然后以该用户身份(并在该用户的权限下)执行程序。为此,我想将您链接到 another of my answers我在这里演示了如何从服务调用程序。 that answer我提供了此技术所需的代码

注意:该答案是关于屏幕截图的,我描述的技术仍然是在用户 session 中调用程序,并且该方法通过服务工作。所以它适用于你的问题。

您可以使用此方法直接执行所需的浏览器。作为替代方案,您可以使用它来调用您的服务可执行文件,您可以在其中使用 System.Environment.UserInteractive检测可执行文件是否未作为服务运行。如果您将 url 作为执行参数传递给您的服务可执行文件,那么您可以使用默认浏览器打开它 Process.Start就像你上面的例子。

注意:代码已在 Windows 7 上测试。

关于c# - 从 Windows 服务启动浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com