首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“允许服务与桌面交互”的替代方案?

“允许服务与桌面交互”的替代方案?
EN

Stack Overflow用户
提问于 2010-02-27 08:00:53
回答 4查看 32.1K关注 0票数 19

我在服务器上安装了一个windows服务(C#),它每隔10分钟启动一个可执行文件(C#),以将一些图像从一个目录处理到另一个目录。不需要与任何用户进行交互。然而,由于可执行文件作为输出窗口,为了使服务运行,我必须启用"Allow service to interact with desktop“复选框,它被视为 。我该如何解决这个问题呢?我喜欢将可执行文件与我的windows服务分开,因为

  • 它使调试变得更容易,而且不需要完整的windows服务redeploy.
  • sometimes我使用相同的windows服务在不同的时间间隔启动几个可执行文件(但都与同一项目相关)。

编辑:

如果未启用与桌面的交互,控制台应用程序将无法正确执行,并且Windows日志中会出现以下错误:

代码语言:javascript
复制
Faulting application myapp.exe, version 1.0.0.0, time stamp 0x4b8304c3, 
faulting module KERNEL32.dll, version 6.0.6002.18005, time stamp 0x49e03821, 
exception code 0xc0000142, fault offset 0x00009eed, process id 0x10ec, 
application start time 0x01cab736950a64b5.

一旦启用了桌面交互,应用程序就可以正常执行。

有什么想法吗?

非常感谢您的宝贵时间。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-27 08:26:37

如果你使用的是Vista和更高版本,并且你不需要与用户进行任何交互,但是有一个交互式的exe要执行,那么Session 0 isolation feature应该有助于缓解一些关于让服务与桌面(在会话0中没有物理控制台)进行交互的“坏习惯”的担忧。

这种会话0隔离将防止非特权用户在您的服务上执行Shatter Attacks,因为他们在不同的会话中获取他们的交互式桌面。Shatter攻击是这种“与桌面交互”被认为是糟糕做法的主要原因,如果你正在使用Vista或更高版本,如果你无法避免它(或将不得不花费太多精力来做它),它应该是可以的。

所以,如果事情运行得很好,你可能就没问题了。

当然,在操作系统更新之后,事情可能会停止工作,所以最好准备将对交互性的依赖移出,因为您并不真正需要它。

票数 11
EN

Stack Overflow用户

发布于 2011-08-24 16:54:39

我知道这有点晚了,但在这种情况下,我会使用任务调度程序,而不是windows服务。任务计划程序有一套全面的调度选项,可以顺利地运行控制台应用程序。

票数 5
EN

Stack Overflow用户

发布于 2010-02-27 08:08:14

如果可以,我建议您重写处理移动的可执行文件,以不使用输出窗口。如果它们是没有输出的标准控制台应用程序,您可以从服务中执行它们,而不需要“允许服务与桌面交互”。这为您提供了所有的好处,而无需对您的服务进行任何更改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2345620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档