Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows 7中使用.NET Windows服务显示消息框_Windows_Vb.net_Winapi_Windows Services - Fatal编程技术网

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

在Windows 7中使用.NET Windows服务显示消息框,windows,vb.net,winapi,windows-services,Windows,Vb.net,Winapi,Windows Services,我们有一个windows服务,当用户在windows xp上扫描他们的访问卡时,它会显示一个确认消息框,但一旦我们迁移到windows 7,弹出功能就不再起作用了。是否有人可以指导我尽快修复此功能,或者给我一些想法?正如您所发现的,服务现在在会话0中运行,这是一个非交互式会话。您不能像在XP中那样与交互式用户的桌面交互 您有两个选择: 调用在交互式桌面上显示消息。这是相当基本的,但可能满足您的需要。如果你真的是指尽快,那么这将是最快的解决方案。 除了运行服务外,还运行标准桌面应用程序。让服务使用

我们有一个windows服务,当用户在windows xp上扫描他们的访问卡时,它会显示一个确认消息框,但一旦我们迁移到windows 7,弹出功能就不再起作用了。是否有人可以指导我尽快修复此功能,或者给我一些想法?

正如您所发现的,服务现在在会话0中运行,这是一个非交互式会话。您不能像在XP中那样与交互式用户的桌面交互

您有两个选择:

调用在交互式桌面上显示消息。这是相当基本的,但可能满足您的需要。如果你真的是指尽快,那么这将是最快的解决方案。 除了运行服务外,还运行标准桌面应用程序。让服务使用某种形式的IPC(例如WCF)与桌面应用程序通信。当服务想要显示信息时,通过IPC频道向桌面应用程序发送消息,并让桌面应用程序显示消息。
正如您所发现的,服务现在在会话0中运行,该会话是非交互式会话。您不能像在XP中那样与交互式用户的桌面交互

您有两个选择:

调用在交互式桌面上显示消息。这是相当基本的,但可能满足您的需要。如果你真的是指尽快,那么这将是最快的解决方案。 除了运行服务外,还运行标准桌面应用程序。让服务使用某种形式的IPC(例如WCF)与桌面应用程序通信。当服务想要显示信息时,通过IPC频道向桌面应用程序发送消息,并让桌面应用程序显示消息。
在Windows XP、Windows Server 2003和早期版本的Windows操作系统中,服务和应用程序与第一个登录到控制台的用户启动的会话在同一会话中运行。此会话称为会话0,如下图所示,在Windows Vista之前,会话0包括服务和标准用户应用程序。 在会话0中同时运行服务和用户应用程序会带来安全风险,因为服务以提升的权限运行,而用户应用程序以用户权限运行,其中大多数不是管理员。这使服务成为恶意代理的目标,恶意代理正在寻找通过“劫持”提升其自身权限级别的机制服务

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

更多详情:


您可以在Windows XP、Windows Server 2003和早期版本的Windows操作系统中找到更多详细信息-会话0隔离-

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

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

更多详情:


您可以找到更多详细信息-会话0隔离-

hmm…WTSSendMessage,此函数是否作为.NET库的一部分提供?如果是这样的话,它可以使我的生活比所有其他suggessted解决方案更轻松,但我找不到任何具有此功能的.NET库?你能详细介绍一下吗?谷歌没有向我透露太多关于.NET和WTSSendMessage的信息。你可以pinvoke。我希望pinvoke.net会有一个声明和示例。Heffeman-谢谢,伙计。它给了我一些方向。虽然还没有奏效,但我可以更深入地研究,所以我遵循了你的指示。当我将应用程序作为控制台应用程序运行时,会弹出消息,但当我将其作为windows服务安装时,消息仍然不会弹出。WTSSendMessage返回的布尔值为false,GetLastError消息显示为5。你知道我做错了什么吗?我不知道,因为我看不到你的代码。如果你对细节有问题,那么它们属于另一个问题。也就是说,错误代码5的含义是众所周知的。
你可以很容易地在文档中查找。你这样做了吗?嗯…WTSSendMessage,这个函数作为.NET库的一部分可用吗?如果是这样的话,它可以使我的生活比所有其他suggessted解决方案更轻松,但我找不到任何具有此功能的.NET库?你能详细介绍一下吗?谷歌没有向我透露太多关于.NET和WTSSendMessage的信息。你可以pinvoke。我希望pinvoke.net会有一个声明和示例。Heffeman-谢谢,伙计。它给了我一些方向。虽然还没有奏效,但我可以更深入地研究,所以我遵循了你的指示。当我将应用程序作为控制台应用程序运行时,会弹出消息,但当我将其作为windows服务安装时,消息仍然不会弹出。WTSSendMessage返回的布尔值为false,GetLastError消息显示为5。你知道我做错了什么吗?我不知道,因为我看不到你的代码。如果你对细节有问题,那么它们属于另一个问题。也就是说,错误代码5的含义是众所周知的。你可以很容易地在文档中查找。你这样做了吗?