繁体   English   中英

在Windows 7中使用.NET Windows服务显示消息框

[英]Displaying Message Box using .NET Windows Services In Windows 7

我们有一个Windows服务,一旦用户在Windows XP上扫描了他们的访问卡,它就会被用来显示确认消息框,但是一旦我们迁移到Windows 7,弹出功能将不再起作用。 谁能尽快指导我或给我任何有关如何尽快修复此功能的想法?

您已经发现,服务现在在会话0(非交互式会话)中运行。 您无法像在XP中那样与交互式用户的桌面进行交互。

您有两种选择:

  1. 调用WTSSendMessage在交互式桌面上显示消息。 这是相当基本的,但可以满足您的需求。 如果您真的是说尽快,那么这将是最快的解决方案。
  2. 除了服务之外,还运行标准的桌面应用程序。 让服务使用某种形式的IPC(例如WCF)与桌面应用进行通信。 当服务要显示信息时,请通过IPC通道将消息发送到桌面应用程序,然后让桌面应用程序显示它们。

在Windows XP,Windows Server 2003和Windows操作系统的早期版本中,服务和应用程序与第一个登录控制台的用户启动的会话在同一会话中运行。 该会话称为会话0,如下图所示,在Windows Vista之前,会话0包括服务和标准用户应用程序。 在会话0中同时运行服务和用户应用程序会带来安全风险,因为服务以提升的特权运行,而用户应用程序以用户特权(大多数不是管理员)运行。这使正在寻找机制的恶意代理成为服务目标。通过“劫持”服务来提升自己的特权级别。

从Windows Vista开始,仅将服务托管在会话0中。用户应用程序与服务隔离,并在用户登录系统时创建的后续会话中运行:第一个登录用户为会话1,第二个为会话2,依此类推。如下图所示。

更多详细信息: http : //blogs.windows.com/windows/archive/b/developers/archive/2009/10/01/session-0-isolation.aspx

您可以找到更多详细信息-会话0隔离-http: //msdn.microsoft.com/zh-cn/Windows7TrainingCourse_Win7Session0Isolation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM