首页 / C# / c# – Windows服务启动和Exe
c# – Windows服务启动和Exe
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Windows服务启动和Exe,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2341字,纯文字阅读大概需要4分钟。
内容图文
![c# – Windows服务启动和Exe](/upload/InfoBanner/zyjiaocheng/968/11b8dd9e12f04954a6a1578c15106c87.jpg)
我目前正在开发一个包含WCF服务,Windows服务和WPF应用程序的项目. Windows服务与WCF通信,在某种情况下,必须启动WPF应用程序以便用户接收消息. (WCF位于远程服务器上,其余位于客户端上).我发布时遇到了一些障碍.我有服务将消息写入应用程序日志,以便我可以在某种程度上“调试”. Windows服务运行以下代码没有问题.
C#代码,Windows服务:
WriteLog.WriteString("PostOffice.MessagesWaiting: Inside, starting up.", EventLogEntryType.Warning);
// Call the WPF Application
var messagingProcess = new Process();
var messageProcessStartInfo = new ProcessStartInfo(@"""C:\GoldenEyeMessages.exe""");
messageProcessStartInfo.CreateNoWindow = false;
messageProcessStartInfo.UseShellExecute = false;
messageProcessStartInfo.FileName = @"""C:\GoldenEyeMessages.exe""";
messageProcessStartInfo.WindowStyle = ProcessWindowStyle.Normal;
messageProcessStartInfo.Verb = "runas";
messageProcessStartInfo.RedirectStandardOutput = true;
messagingProcess.StartInfo = messageProcessStartInfo;
messagingProcess.Start();
StreamReader daStreamReaderMan = messagingProcess.StandardOutput;
string newString = daStreamReaderMan.ReadLine();
WriteLog.WriteString("PostOffice.MessagesWaiting: The Eagle has landed.", EventLogEntryType.Warning);
WPF应用程序不在当前用户的会话中执行.相反,我得到一个弹出窗口来查看该消息.这是它的图片:
选择“查看消息”选项后,它当然会将我切换到不同的会话,然后运行WPF应用程序.
我的问题是,如何让WPF应用程序在当前用户的会话或“活动”会话中启动?
解决方法:
您之所以这样,是因为尝试启动WPF可执行文件的用户没有与桌面交互的权限.
Windows服务通常不在具有该权限的帐户下运行,并且它被视为安全漏洞.
In most cases, it is recommended that you not change the Allow service to interact with desktop setting. If you allow the service to interact with the desktop, any information that the service displays on the desktop will also be displayed on an interactive user’s desktop. A malicious user could then take control of the service or attack it from the interactive desktop.
http://technet.microsoft.com/en-us/library/cc782435(v=ws.10).aspx
更安全的替代方案是让WPF应用程序始终在系统托盘中运行,并为Windows服务安排一种机制,以向WPF应用程序发出需要显示消息的信号.一个简单的机制是将文件写入约定的位置,并使用WPF应用程序中的文件观察器来查找该文件(并在显示后将其删除).请注意,Windows服务可能在用户登录之前很久就已运行(早在WPF应用程序运行之前),因此您使用的任何通知机制都需要允许消息累积并在登录后立即显示.
内容总结
以上是互联网集市为您收集整理的c# – Windows服务启动和Exe全部内容,希望文章能够帮你解决c# – Windows服务启动和Exe所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。