C#写的守护服务怎么以管理员身份运行,并允许用户交互?

如题,使用C#写的守护服务DataTransferServices.exe,是以SYSTEM的身份运行的,如下图所示:此守护服务会扫系统进程列表,如果CQ_DataTra... 如题,使用C#写的守护服务DataTransferServices.exe,是以SYSTEM的身份运行的,如下图所示:

此守护服务会扫系统进程列表,如果CQ_DataTransfer.exe不存在,则自动启动CQ_DataTransfer.exe,用户名是SYSTEM,并且对服务设置了“允许用户交互”,如下图所示。

但是CQ_DataTransfer.exe是一个WinForm用户交互程序,如下图所示:

在守护服务中勾选了允许用户交互,但是看不到界面。
但如果我手动双击CQ_DataTransfer.exe,以Administrator启动,就可以看到应用程序界面:如下图所示:

请问各位老师,我应该怎么改写守护服务程序代码,才能让CQ_DataTransfer.exe自动展示在用户桌面上?

下面附上服务程序代码。
不能发布附件,守护服务代码下载地址为:

http://files.cnblogs.com/tianzhiliang/CocoWatcher.rar
展开
 我来答
旁笑槐NH
2014-10-01 · TA获得超过2545个赞
知道大有可为答主
回答量:2686
采纳率:0%
帮助的人:2851万
展开全部
别用服务做 你可以把这个程序加入到开始菜单的启动文件夹就行了 这样每次用户登录时候就会自动启动

如果要做成服务 start不应该包含任何ui逻辑因为windows对服务启动有一定的时间限制 操作限制系统认为服务启动失败。ui是消息循环 显示ui的时候start没法退出。通常的做法是windows服务写个server提供api(如wcf)之后ui通过api同服务交互。这样做的好处有1.可以在登录前执行任务;2.可以将一些高权限的功能放在windows服务里,这样可以避免程序自动启动时弹出烦人的UAC确认框。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
makosharp
推荐于2018-03-23 · TA获得超过676个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:265万
展开全部
在vista之后的windows系统中,所有的system服务都跑在用户会话0上,而你登陆的用户永远是在会话1以及之后,所以系统服务的UI不是弹不出来,是你在当前桌面看不到(虚拟机上可以随时切换着看)

想穿透这个屏障需要使用跨会话通信技术。
传统点的可以使用系统api,新鲜点的可以在会话间使用wcf通讯,也有极端点办法比如利用IIS。

代码我就不写了,这里有篇深入分析此问题的博文,希望能帮到你。
http://blog.csdn.net/kissqw/article/details/7264450
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩转数据处理
2014-09-29 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3792

向TA提问 私信TA
展开全部
可以参考下以下链接:
http://www.cnblogs.com/babycool/p/3569183.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kyd3000
2014-09-28 · TA获得超过1550个赞
知道大有可为答主
回答量:1674
采纳率:50%
帮助的人:862万
展开全部
试试把service账户
不用localsystem,
转用administrator试试

不然感觉service 用的localsystem用户 start()程序 肯定不会到 administrator去

我不做CS开发业也不太懂=3=
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式