Tag: windows services

如果是Workgroup,如何在远程计算机上授予Windows服务访问权限?

我正在开发一个Windows服务,其任务之一就是在远程计算机上存档文件,但是在工作组的情况下,我遇到了有关访问权限的问题。

C#查询Windows服务

我一直在使用查询在远程服务器上运行的Windows服务的应用程序,并将机器名称,服务名称和状态写入数据库。 但是,我想尝试捕获启动类型(自动,手动,禁用)。 我使用的服务控制器没有启动类型的任何选项,因此我开始考虑使用管理类。 这个类看起来像我有我需要的一切,但我不知道如何使用它对我的遥控器服务器。 对于服务控制器,我这样做: ServiceController[] services = ServiceController.GetServices(serverIP); foreach (ServiceController service in services) { var machine = service.MachineName; var displayName = service.DisplayName; var status = service.Status; } 我为Management类尝试了这个: ManagementClass class1 = new ManagementClass(serverIP + “\\” + “Win32_Service”); foreach (ManagementObject ob in class1.GetInstances()) { var machine = serverIP; var displayName = ob.GetPropertyValue(“Description”); var name = […]

通过服务删除Windows登录屏幕

我试图从服务启动的可执行文件中删除Windows登录屏幕(winlogon)。 该服务将自动启动Windows并等待来自另一台计算机的命令。 当它收到命令时,它将启动一个exe,它将在特定的用户名下启动cmd.exe。 该服务已经存在。 我有编写这个可执行文件的工作。 目前,我编写了可执行文件(CmdLogin),它通过调用LogonUserW,ImpersonateUser和CreateProcessWithLogonW在不同的用户下启动cmd.exe。 我将lpDesktop指定为“WinSta0 \ Default”。 唯一的问题是该服务必须在管理员帐户下运行(但这是一个不同的问题)。 从命令提示符调用时(即使在Windows 7上),这完全正常。 当用户登录并查看他的桌面时(例如我在同一台机器上进行调试时)从服务调用时,这也有效。 但是,正如我上面所说,我的真正要求是即使显示Windows登录屏幕也能正常工作。 目前,exe提供了正确的退出代码,但窗口没有出现。 但是,当用户登录时,他会在桌面上看到cmd窗口。 我找到的一个解决方案是使用“WinSta0 \ WinLogon”代替默认的lpDesktop。 我还没试过。 但是,这看起来会在登录屏幕上显示cmd窗口。 我真正需要的是实际模拟用户登录winlogon并显示他的实际桌面(以及cmd窗口)。 我环顾四周,发现了GINA和Winlogon通知包。 他们看起来像是一种矫枉过正,我不确定这是否能解决这里的目的。 此外,这些在Windows Vista中已被弃用,这使我认为有一种更好,更简洁的方法来解决这个问题。 有关我应该用什么来实现这一目标的任何建议? 为了记录,可执行文件在C#中,使用P / Invoke进行API调用。 我愿意使用我可以从这个C#应用程序调用的C dll。 谢谢, 侯赛因

基于C#的Windows服务 – 尝试在生产中进行JIT调试

我在我投入生产的服务的事件日志中收到此错误: RivWorks.FeedHandler.exe [5496]中发生了未处理的win32exception。 即时调试此exception失败,并出现以下错误:无法启动调试器,因为没有用户登录。 我在Win NT全局帐户下安装并运行它。 我不知道它为什么试图进入调试模式。 它是在Release模型下构建的。 在4.0 Framework上运行。 当我在我的开发机器上运行时,通过EXE入口点而不是WinSvc入口点,一切运行正常 – 但是 – 我已经处于“调试”模式。 有什么想法的想法? 2010-10-21 – 注意 – 更改了代码库。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.IO; using sysIO = System.IO; using RivWorks.FeedHandler; using System.Collections; namespace RivWorks.FeedHandler.Service { public partial class FeedListener : […]

Windows服务托管TCP WCF服务

我试图在Windows 2008 R2服务器上托管WCF服务作为Windows服务。 我按照msdn( 在这里找到 )提供的指示。 只要一切都是视觉工作室中同一解决方案的一部分,一切都很好。 但是,我尝试在不同的解决方案(在同一台机器上)创建客户端,但无法找到该服务。 我收到如下所示的“添加服务引用错误”。 我的目标是能够远程访问wcf服务,但我似乎甚至无法在本地访问它,除非客户端是在同一客户端内创建的。 是否有任何指南,教程或有用的提示,任何人都可以让我让这个工作? 更新:似乎即使Windows服务正在运行,WCF服务似乎没有监听任何端口。 这表明它没有运行。 这也解释了为什么每个人都认为我没有运行该服务。 我曾经假设,因为Windows服务正在运行并且同一个解决方案客户端工作,所以WCF服务也正常运行。 事实certificate,只要我运行相同的解决方案客户端,Visual Studio就会启动WCF服务。 那么,为什么Windows服务不启动WCF服务呢? 有任何想法吗?

使用c#在一天内获取服务器重启计数?

是否可以使用c#获取服务器在一段时间内重新启动的次数? 我已经看到这篇文章正在获取Windows上次关机时间使用.NET获取上次Windows关闭事件的日期时间 有什么建议吗?

如何创建多个窗口服务实例?

我想运行服务器上安装的窗口服务的多个实例,而无需再次安装窗口服务。 这怎么可能?

如何在Windows服务之间进行通信

我有2个使用C#创建的Windows服务。 我想在第二个Windows服务中调用一个函数的服务之一。 我该怎么办? 编辑: 问题是我必须运行应用程序(我不需要它们而不是服务进程也很好)但我需要这个2应用程序进行通信,这2个应用程序在同一台服务器上,

从Windows服务打印PDF

使用C#,如何在指定的打印机上打印PDF文档(后台没有任何对话框)?

如何确定是否在Windows服务内启动?

目前我正在通过以下方式检查它: if (Environment.UserInteractive) Application.Run(new ServiceControllerForm(service)); else ServiceBase.Run(windowsService); 它有助于调试一点,服务也可以使用可执行文件运行。 但现在假设该服务需要与用户桌面进行交互,因此我必须在属性中启用“允许服务与桌面交互”。 这当然打破了这种检查方式。 还有另一种方式吗?