C# · 12月 30, 2021

c# – 允许服务与Windows中的桌面交互

在services.msc>动作>属性>登录>允许服务与桌面交互,我启用了我的服务与桌面交互.这是什么意思呢?如何使用它从我的服务播放声音(MP3,WAV等)?

Action > Properties > Log On > Allow service to interact with desktop” src=”https://i.stack.imgur.com/4QYRC.jpg”>

解决方法 我会在这里试图从关键字中解释你的问题.在将来,请花更多的时间编写你的问题,使他们对另一个试图阅读和理解他们的人有意义.

Windows服务的属性窗口中的“登录”选项卡下有一个复选框,称为“允许服务与桌面交互”.如果要以编程方式检查该框,则在使用CreateService API创建服务时,需要指定SERVICE_INTERACTIVE_PROCESS标志. (见MSDN).

但是,请注意,从Windows Vista开始,严格禁止服务与用户直接交互:

Important: Services cannot directly interact with a user as of
Windows Vista. Therefore,the
techniques mentioned in the section
titled Using an Interactive Service
should not be used in new code.

这个“特征”是坏的,传统的智慧决定你不应该依靠它.服务不是提供UI或允许任何类型的直接用户交互. Microsoft已经警告说,由于可能的安全风险,Windows NT早期版本就避免了此功能.拉里·奥斯特曼(Larry Osterman)认为为什么是@L_502_3@.而他是not the only one.

有一些possible workarounds,但是,如果你绝对必须有这个功能.但是,我强烈要求您仔细考虑其必要性,并为您的服务探索其他设计.