A Windows Service should load a form at startup
如何在Windows服务的OnStart事件中加载"登录表单"?!我知道Windows服务与UI不兼容。但我需要在不使用Windows Startup的情况下执行此操作。有可能吗?怎么办?谢谢。
- 有可能吗?你试过了吗?
- 我不知道。我在找办法……
- 直接在stackoverflow上询问,这是您的搜索方式吗?
- 所以你知道Windows服务不应该对用户界面做任何事情,但你还是问它?
- 你的设计可能错了。
- 一定地。。这是一种方法。上周我尝试了其他方法。
- 对。。但我正在寻找其他的设计……
- 不过,这个问题不需要其他的设计。它声称有些事情是不可能的,然后询问如何去做。
- 你真的想让我们帮你提供信息吗?这是不可能的,更具体一点。
- 另请阅读:stackoverflow.com/questions/53232/…
- 另请参见"Windows服务是否可以具有GUI?"Windows服务应该有一个GUI吗?"…
How can I load a 'login form' in OnStart event of windows Service?
号
无法执行此操作,因为Windows服务无法显示用户界面。
I know windows service is incompatible with UI.
号
哦。你已经知道了。很好。
but I need to do this without using windows startup..
号
这并不能改变它不受支持和不起作用的事实。
Is it possible? and how?
号
不,因为:
windows service is incompatible with UI.
号那我该怎么办!?!
真正的答案是你的设计错了。
如果您需要有人登录到您的应用程序,则不应创建服务。
只需制作一个标准的Windows应用程序(例如,使用Windows窗体或WPF),并将其设置为在任何用户登录到计算机时自动启动。这可以通过向"所有用户"的"启动"文件夹中添加快捷方式来轻松完成。
然后,当你的应用运行时,你可以显示你需要的任何用户界面,而不受服务的限制。
- "Windows服务无法显示用户界面"-他们可以。是的,他们不应该,这不容易,但是…
- 根据设计,服务不显示用户界面。我不确定您是否在谈论Windows XP和旧版本中存在的安全漏洞,或者您所指的是某种新类型的会话0漏洞,但我认为这两种情况都不会否定我所做的声明。你也可以拿一个魔术笔,把表格画到显示器上。这也不算。
- 这是不相容的,但有可能……我需要类似Windows登录表单的东西。不仅仅是一个应用程序。如果你认为这是不可能的,建议其他方法,如果你知道……
- 这是不可能的。它不仅没有任何逻辑意义,而且在操作系统的设计中已经明确地采取了步骤来防止它的发生。我已经提出了另一种方法。
- 我认为你只是在看部分评论。你不应该这样做。不是。Windows服务无人参与。改变你的设计。
- 我告诉过你我不会使用启动文件夹。因为用户可以在登录后更改它。我需要类似Windows登录表单的东西。
- 标准用户不具备修改"所有用户"文件夹所需的权限。他们唯一能控制的就是他们的个人文件夹,这就是为什么你不把它放在那里。如果他们是管理员,所有的赌注都是关闭的,因为他们也可以控制服务。
- 但是你可以控制服务……你可以改变"Windows服务",没有人能阻止它。即使是管理员
如果您需要将UI交互与服务结合起来,那么您应该编写两个程序——公开某种API的服务和与该API交互的客户机程序(使用您想要选择的任何IPC机制)。
请记住,多个用户可以登录到同一台机器上,因此您应该编写所有内容,以处理同时运行的多个客户机程序实例。
- 您不仅需要处理多个登录到机器的用户,还必须处理没有用户登录到机器的情况。如果还没有人登录,它将在哪里显示登录表单?