Tag: windows services

Topshelf在VS2010中托管应用程序调试

我正在尝试使用Topshelf托管应用程序Topshelf.Host.exe来执行我的.NET类库作为Windows服务。 http://topshelf-project.com/documentation/shelving/ 我在连接VS2010内部的调试器时遇到了麻烦。 这是我的设置 Topshelf.Host.exe在c:\ projects中说 我的classlibrary服务构建到c:\ projects \ Services \ library-name \ 运行Topshelf.Host.exe作为类库的外部应用程序进行调试 使用F5 /运行Topshelf.Host.exe正在运行,但它似乎没有拿起并加载我的类库。 有任何想法或更好的方法来设置调试?

在后台异步进程运行时,开发人员可以“强制”系统以防止“Metro”应用程序被暂停吗?

当一个应用程序当前在Win8中不是“正面和中心”时,它将被暂停。 这是否会阻止应用程序在后台显式保持活动状态,例如在电子邮件客户端中,使用异步操作轮询邮件服务器以获取新邮件,然后下载它们(然后使用新邮件计数更新Tile)? 如果这是不可能的(暂停的应用程序无法执行后台处理,或者无法强制系统允许它保持活动状态,尽管不可见),那么解决方法是什么 – 单独的Windows服务?

如何授予我的Windows服务管理员权限

我有一个winform,允许我使用以下代码启用和禁用我所有8岁的网络适配器: protected override void OnStart(string[] args) { //start timer SelectQuery query = new SelectQuery(“Win32_NetworkAdapter”,”NetConnectionStatus=2″); ManagementObjectSearcher search = new ManagementObjectSearcher(query); foreach (ManagementObject result in search.Get()) { NetworkAdapter adapter = new NetworkAdapter(result); adapter.Disable(); enabled = false; } InternetCheckTimer.Start(); } 假设我正在使用admin运行,此代码在win表单上正常工作。 我从来没有写过win服务,所以问题可能就是其他地方,我可以使用installutill进行安装并将调试器附加到进程,但是没有破坏点。 我已经尝试启动和停止进程并且无法让调试器附加,所以我可能也会这样做错误…现在我假设代码正在运行,我太愚蠢了,无法让调试器工作。 也就是说,我认为我的代码要求服务具有像表单那样的管理员才能工作。 对不起,如果不清楚,如果您需要更多信息,我会尽力清理它。

使用c#从服务名称获取进程ID

是否有可能在不使用c#中的管理对象的情况下从服务名称获取进程ID? 当WMI服务处于错误状态时,管理对象不起作用。

Windows服务在启动期间失败的正确方法是什么

我需要我的服务来检查某些文件在启动期间的存在和结构,如果不满足某些条件则退出/失败/停止。 我读了这个post: Windows服务失败的正确方法是什么? 但它没有帮助。 我将ServiceBase.ExitCode属性设置为非零,然后调用ServiceBase.Stop。 但我得到5个事件日志条目。 见下文: Starting service. (I log this event via code) Config.xml file not found. (I log this ERROR event via code) Service stopped successfully. (SCM logs this message) Service started successfully. (SCM logs this message) Service cannot be started. The handle is invalid (SCM logs this message) 正如你所看到的,除了最后两个条目外一切正常。 他们为什么在那里? 如何在启动期间正确关闭服务? […]

检测您的操作系统在C#中安装了哪个版本的IE?

我目前正在管理一个Windows服务,该服务以编程方式生成HttpWebRequest和HttpWebResponse对象,以检索请求的响应消息。 HttpWebRequest的UserAgent属性被硬编码为使用IE 6作为浏览器代理。 是一种通过程序方式检测托管服务的服务器上安装的IE版本的方法吗? 它目前托管在Windows Server 2003计算机上,可能安装在Windows Server 2008计算机上。

具有多个计时器的Windows服务

在我目前的实习期间,我获得了一名前实习生编写的Windows服务,该实习监控存档并通过电子邮件和弹出窗口警告特定人员,如果其中一个记录值超出一定范围。 它目前使用计时器每隔30秒检查一次存档,并且我被问到是否能够更新它以允许选择时间,具体取决于所监视的“标记”。 它使用XML文件来跟踪正在监视的标记。 在服务中创建多个计时器是最有效的方法吗? 我不确定采取什么方法。 该服务使用.NET 3.5以C#编写。

.NET服务是否表现出线程敏捷性?

与此相关的问题以及关于ASP.NET线程敏捷性的问题相关:用C#编写的Windows服务是否表现出与ASP.NET中相同的线程敏捷性行为? 或者线程敏捷性是IIS的一个特性而不是.NET? 我真正想要的是,我可以确定Windows服务中的线程管理完全取决于服务本身吗? 或者,如果选择这样做,.NET可以在长时间运行的服务中跳转线程吗?

如何使用c#将消息从Windows服务传递到Windows桌面应用程序?

我想将一条消息从Windows服务传递到已经运行的Windows桌面应用程序。 我在Windows服务上实现了一个计时器。 在一段时间之后,服务向Windows应用程序发送消息。 服务或发件人代码如下: System.Diagnostics.Process[] lProcs = System.Diagnostics.Process.GetProcessesByName(“TestProcess2”); if (lProcs.Length > 0) { IntPtr handle = lProcs[0].MainWindowHandle; if (handle != IntPtr.Zero) SendMessage(handle, 232, IntPtr.Zero, IntPtr.Zero); } 和windows桌面应用程序(接收器)代码如下: protected override void WndProc(ref Message m) { if (m.Msg == 232) { MessageBox.Show(“Received”); } else { base.WndProc(ref m); } } 当两个进程都是windows桌面应用程序时,上面的代码工作正常。 当我使用Windows服务作为发件人时,Windows桌面应用程序进程无法接收消息。 你能帮我吗?

Windows服务启动和Exe

我目前正在开发一个包含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 […]