“允许服务与桌面交互”替代方案?我在服务器上安装了一个Windows服务(C#),它每10分钟启动一个可执行文件(C#)来处理从一个目录到另一个目录的一些图像。不需要任何用户进行交互。尽管如此,由于可执行文件充当输出窗口,为了运行服务,我必须启用“允许服务与桌面交互”复选框,这被认为是不安全的不良做法。我怎么解决这个问题?我喜欢将可执行文件与我的Windows服务分开,因为编辑:当未启用与桌面的交互时,控制台应用程序无法正确执行并且我在Windows日志中收到以下错误:Faultingapplicationmyapp.exe,version1.0.0.0,时间戳0x4b8304c3,故障模块KERNEL32.dll,版本6.0.6002.18005,时间戳0x49e03821,异常代码0xc0000142,故障偏移量0x00009eed,进程ID0x10ec,应用程序启动时间0x01cab736950a64b5。启动桌面交互后,应用程序将正常执行。有什么想法吗?非常感谢您的参与。如果你在Vista及更高版本上并且你真的不需要与用户进行任何交互,但正在执行交互式exe,则会话0隔离功能应该有助于减轻一些关于服务的“不良做法”担心与桌面(会话0中没有物理控制台)。此会话0隔离将防止非特权用户对您的服务执行碎片攻击,因为他们在不同的会话中获得他们的交互式桌面。粉碎攻击是这种“与桌面交互”被认为是不良做法的主要原因,如果您使用的是Vista或更高版本,则如果您无法避免它(或者将不得不花费太多精力去做)不应该质疑。所以,如果一切正常,你可能没问题。当然,操作系统更新后可能会停止工作,因此最好准备好将依赖项移到外部,因为您并不真正需要它。我知道这有点晚了,但在这种情况下,我会使用任务调度程序而不是使用Windows服务。任务计划程序有一套全面的计划选项,可以毫无问题地运行控制台应用程序。如果可以,我建议重写处理移动的可执行文件,以便不使用输出窗口。如果它们是没有输出的标准控制台应用程序,您可以在没有“允许服务与桌面交互”的服务中执行它们。这为您提供了所有好处,而无需对您的服务进行任何更改。subprocess只是一个控制台应用程序吗?我没有写过Windows服务,但我想也许只是启动一个没有窗口的子进程就足够了。使用采用ProcessStartInfo并将ProcessStartInfo.CreateNoWindow设置为true的ProcessStart重载。http://msdn.microsoft.com/zh-cn/library/system.diagnostics.processstartinfo.createnowindow.aspx以上是C#学习教程:“允许服务与桌面交互”替代方案?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
