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 展开
此守护服务会扫系统进程列表,如果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 展开
4个回答
展开全部
别用服务做 你可以把这个程序加入到开始菜单的启动文件夹就行了 这样每次用户登录时候就会自动启动
如果要做成服务 start不应该包含任何ui逻辑因为windows对服务启动有一定的时间限制 操作限制系统认为服务启动失败。ui是消息循环 显示ui的时候start没法退出。通常的做法是windows服务写个server提供api(如wcf)之后ui通过api同服务交互。这样做的好处有1.可以在登录前执行任务;2.可以将一些高权限的功能放在windows服务里,这样可以避免程序自动启动时弹出烦人的UAC确认框。
如果要做成服务 start不应该包含任何ui逻辑因为windows对服务启动有一定的时间限制 操作限制系统认为服务启动失败。ui是消息循环 显示ui的时候start没法退出。通常的做法是windows服务写个server提供api(如wcf)之后ui通过api同服务交互。这样做的好处有1.可以在登录前执行任务;2.可以将一些高权限的功能放在windows服务里,这样可以避免程序自动启动时弹出烦人的UAC确认框。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在vista之后的windows系统中,所有的system服务都跑在用户会话0上,而你登陆的用户永远是在会话1以及之后,所以系统服务的UI不是弹不出来,是你在当前桌面看不到(虚拟机上可以随时切换着看)
想穿透这个屏障需要使用跨会话通信技术。
传统点的可以使用系统api,新鲜点的可以在会话间使用wcf通讯,也有极端点办法比如利用IIS。
代码我就不写了,这里有篇深入分析此问题的博文,希望能帮到你。
http://blog.csdn.net/kissqw/article/details/7264450
想穿透这个屏障需要使用跨会话通信技术。
传统点的可以使用系统api,新鲜点的可以在会话间使用wcf通讯,也有极端点办法比如利用IIS。
代码我就不写了,这里有篇深入分析此问题的博文,希望能帮到你。
http://blog.csdn.net/kissqw/article/details/7264450
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试把service账户
不用localsystem,
转用administrator试试
不然感觉service 用的localsystem用户 start()程序 肯定不会到 administrator去
我不做CS开发业也不太懂=3=
不用localsystem,
转用administrator试试
不然感觉service 用的localsystem用户 start()程序 肯定不会到 administrator去
我不做CS开发业也不太懂=3=
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询