我需要我的应用程序根据某些事件启动和停止Windows服务。问题是这个应用程序需要作为一个提升的普通用户(为了停止服务)运行,以及在Windows启动时自动启动。另外,它需要在具有用户界面的系统托盘中。
我有什么选择?
我想至少有两种可能性:
有任何想法和建议吗?
答案 0 :(得分:1)
绝对使用选项2并专门使用WCF(Windows Communication Foundation)使用wsHTTPS绑定与Windows服务进行通信,以便您可以验证登录用户是否可以在Windows托管的WCF服务上执行操作服务。
答案 1 :(得分:0)
对于数字1,为了以管理员权限运行您的应用程序,如果没有弹出UAC对话框,或者您拥有管理员密码,则无法运行它
对于2号,这是一个有趣的话题,这里有一篇很好的文章,附带例子&源代码:http://www.codeproject.com/KB/threads/process_communication.aspx主题是.net远程处理。我确信这是在不同应用程序之间进行通信的最佳方式。
答案 2 :(得分:0)
实际上,对于数字1,您可以将两个进程链接在一起,以在没有UAC对话框的情况下实现提升的进程。喜欢这个
第一道工序 - >以管理员身份启动(需要一种提供凭据的方式) - >使用ShellExecute启动另一个进程并提供Runas动词。 - >你的最后一个过程
答案 3 :(得分:0)
您可以使用“计划任务”工具来完成您想要的任务。对于调度,可以选择安排程序在用户登录时运行。可以使用备用凭据运行任务。
我无法告诉你如何以编程方式设置它(可能有一个WMI接口),但通过UI很容易。