Tag: 服务

Windows 7中的代码中的停止/启动服务

我正在尝试编写一个应用程序和服务来监视一组给定的服务,并且a)确保它们正在运行,并且b)根据某些标准,根据需要重新启动它们。 我一直遇到拒绝访问错误。 如果我只是遍历系统上的进程,找到我想要的那样: foreach (ServiceController sc in ServiceController.GetServices()) { if(sc.ServiceName == “MyServiceName”) { sc.Stop(); sc.WaitForStatus(ServiceControllerStatus.Stopped, new TimeSpan(0, 0, 60)); sc.Start(); } } 我明白了: InnerException: System.InvalidOperationException Message=”Cannot open My Service service on computer ‘.’.” Source=”System.ServiceProcess” StackTrace: at System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess) at System.ServiceProcess.ServiceController.Stop() at lib.ListServices() in D:\lib.cs:line 552 at lib.Init() in D:\lib.cs:line 56 InnerException: System.ComponentModel.Win32Exception Message=”Access is denied” […]

如何编写c#服务,我也可以作为winforms程序运行?

我有一个用C#编写的Windows服务,它充当后端数据库的一堆网络设备的代理。 为了测试并添加模拟层来测试后端,我希望有一个GUI供测试操作员运行模拟。 也适用于作为演示发送的条纹版本。 GUI和服务不必同时运行。 实现这种决斗操作的最佳方法是什么? 编辑:这是我的解决方案,从这个问题 , 我运行即服务和安装.NET Windows服务没有InstallUtil.exe使用这个优秀的代码 Marc Gravell 它使用以下行来测试是运行gui还是作为服务运行。 if (arg_gui || Environment.UserInteractive || Debugger.IsAttached) 这是代码。 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.ComponentModel; using System.ServiceProcess; using System.Configuration.Install; using System.Diagnostics; namespace Form_Service { static class Program { /// /// The main entry point for the application. /// [STAThread] […]

为什么我们不能像在WCF或ASMX中那样在Visual Studio中添加Web API作为“服务引用”?

我决定将Web API(作为中间层)用于我正在开发的应用程序,但似乎无法弄清楚如何将其“绑定”到前端(前端是ASP.NET MVC4项目)。 通常,我只需右键单击前端的服务,选择“添加服务引用”,然后将我的服务的URL放入。但是使用Web API,我不能这样做。 从我的前端使用的Web API创建客户端代理类有哪些选择,为什么不像添加WCF或ASMX那样将Web API支持作为引用添加?

.Net的目录服务引发了一个奇怪的例外

我有一个小的C#解决方案用于检查用户凭据。 它适用于我的两个队友,但在我的电脑上我得到了一个例外。 相关代码: PrincipalContext context = new PrincipalContext(ContextType.Domain); if (context.ValidateCredentials(System.Environment.UserDomainName + “\\” + usr, pwd)) return true; else return false; 例外是: DirectoryOperationException,“服务器无法处理目录请求。”。 我尝试使用显式服务器名称和636端口号创建上下文,但这也没有帮助。 有任何想法吗?

Unity3D Android插件:无法启动服务

我的目标是启动一个服务,通过.jar文件添加为Unity3D中的android插件。 在这个线程中,我发现了如何启动它,我可以最终获得本机代码。 但是我在日志中遇到了以下问题: 07-14 15:02:23.965: W/ActivityManager(444): Unable to start service Intent { cmp=net.calipssoone.bnh/com.activitychecker.adservice.CheckService } U=0: not found 我用谷歌搜索,发现问题在清单中,但无法弄清楚我做错了什么。 以下是清单中声明服务的方式: 它在Java中的包名实际上是相同的: com.activitychecker.adservice StartReceiver类: public class StartReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {} } CheckService类: public class CheckService extends Service { public void onCreate(){} public long getCurrentTime(){} public void loadInfo(){} public int […]

EventLog写入权限

我的问题与Windows事件日志的写权限有关。 我已经查看了几个这样的post,并找到了一些方法来解决我的问题,但这些都不适用于我目前的情况。 我在.NET 4.0中使用C#。 我使用EventLog类: EventLog类 简而言之,我需要查看是否有方法使用经过身份validation的用户和密码进行模拟或身份validation,以达到我需要写入事件日志的权限。 服务器将始终位于Windows Server系列中,但版本可能会有所不同。 我的应用程序是运行以下帐户之一的Windows服务: 网络服务 本地服务 本地系统 具有受限权限的用户(用户或域用户组) 以下是我的其他一些标准: 我不能将服务用户作为管理员,甚至服务器上的本地管理员 我无法编辑或更改注册表 我无法更改服务器上的UAC或任何组策略 我有一个具有管理员权限的用户,但它不能用于运行该服务 事件日志始终是本地事件日志,而不是远程计算机上的事件日志 日志可能始终是“应用程序”日志 来源可能会有所不同 ,这似乎是问题的核心 我的问题是: 这一切都可能吗? 我可以在我的代码中冒充用户来实现我的需求吗? 我连接到Web服务,登录到smtp服务器,当然还有数据库等。 我偶然发现了这个类: EventLogPermission类 但我似乎无法就如何使用该课程获得一个好的概念。 我希望我表达了我的问题。 由于我的标准,我不会将此作为另一篇文章的副本。

从Unity3D代码启动android服务

在我的用于android的Unity3D应用程序中,我需要启动一个服务,它将在后台运行。 我无法弄清楚我该怎么做。 必须在活动上调用方法startService() ,但我不知道如何将当前的unity活动从unity脚本传递到我的android插件。 我还没有找到任何方法来获取静态方法中的活动并在其中运行startService() 。 据我了解序列,我需要获得主要的Unity3D活动并从中启动服务。 我的class级应该叫服务。 public final class StatusCheckStarter { public static void StartCheckerService() { startService(new Intent(this, CheckService.class)); } } 这段代码不起作用,因为“无法解析方法startService”而且我没有任何东西要传递给这个参数。 我需要获得当前的活动。

.NET Windows服务中的消息泵

我有一个用C#编写的Windows服务,它处理自助服务终端应用程序的所有外部硬件I / O. 我们的新设备之一是USB设备,它在本机DLL中附带API。 我创建了一个正确的P / Invoke包装类。 但是,必须使用HWnd将此API初始化为Windows应用程序,因为它使用消息泵来引发异步事件。 除了向硬件制造商提出请求以向我们提供不依赖于Windows消息泵的API之外,有没有办法在我的Windows服务中的新线程中手动实例化消息泵,我可以将其传递给此API ? 我是否真的必须创建一个完整的Application类,或者是否有一个封装消息泵的低级.NET类?

启动流程的服务不会显示GUI C#

嘿,我正在尝试获得一项服务来启动我的程序,但它没有显示GUI。 该过程开始但没有显示任何内容。 我尝试启用“允许服务与桌面交互”,但仍然无效。 我的程序是一个计算机锁定设备,用于阻止未经授权的用户访问计算机。 我正在运行带有64位操作系统的Windows 7。 这是我服务的代码: protected override void OnStart(string[] args) { Process p = new Process(); p.StartInfo.FileName = “notepad.exe”; p.Start(); FileStream fs = new FileStream(@”C:\Users\David\Documents\Visual Studio 2010\Projects\LockPCService\LockPCService\bin\Debug\ServiceLog.dj”, FileMode.OpenOrCreate, FileAccess.Write); StreamWriter m_streamWriter = new StreamWriter(fs); m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); m_streamWriter.WriteLine(” LockPCService: Service Started ” + DateTime.Now + “\n” + “\n”); m_streamWriter.Flush(); m_streamWriter.Close(); } protected override void […]

调用批处理文件后,服​​务在WaitForExit处挂起

我有一个服务有时会调用批处理文件。 批处理文件需要5-10秒才能执行: System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process proc.StartInfo.FileName = fileName; proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; proc.StartInfo.CreateNoWindow = true; proc.Start(); proc.WaitForExit(); 当我在控制台中运行相同的代码时,该文件确实存在并且代码可以正常工作。 但是当它在服务内部运行时,它会在WaitForExit()处挂起。 我必须从Process中删除批处理文件才能继续。 (我确定文件存在,因为我可以在进程列表中看到它。) 我该如何修复这个挂断? 更新#1: 凯文的代码允许我获得输出。 我的一个批处理文件仍然挂起。 “C:\ EnterpriseDB \ Postgres \ 8.3 \ bin \ pg_dump.exe”-i -h localhost -p 5432 -U postgres -F p -a -D -v -f“c:\ backupcasecocher \ backupdateevent2008.sql”-t […]