如何让一个服务在当前用户的会话下运行一个进程?
我有一项用C#编写的服务,该服务可以监视一组文件.如果其中一个文件的修改时间超过4小时,它使用growl来通知最终用户.我已经看到growl.exe在当前用户的会话下没有运行的情况,因此他们没有收到更新.我希望我的服务检查以确保Growl正在运行(growl.exe,或者我可以在某处寻找应用程序ID?),如果不是在某个地方?).我该如何确保在此服务运行的任何计算机上的当前用户会话中始终运行Growl? 解决方案 如果服务需要作为当前用户运行,那么为什么要将其作为服务?服务的目的是始终运行,即使没有登录用户.因此,它旨在始终作为特定用户运行. 为什么不将其转换为用户登录时运行的程序? 其他解决方案 这是一个有趣的问题,但似乎您不能这样做,因为这篇文章建议.似乎您可以指定服务作为本地系统服务或特定用户运行: 其他解决方案 如果您的服务是作为"自动"启动的,则您只能在配置中预先配置一组服务的凭据.但是,如果您可以确定该服务在启动时调用的.EXE文件,则可以创建一个
10 2024-04-26
编程技术问答社区
帮助解释
我有一些我很难理解的代码.有人可以帮助我按行分解它吗? Service1Client client = new Service1Client(); client.getPrimaryListCompleted += new EventHandler(AddPrimaryMarkerGraphics); client.getPrimaryListAsync(); 解决方案 第一行创建了类的实例Service1Client 第二行将事件的事件处理程序挂钩getPrimaryListCompleted. 第三行开始异步请求.当有响应时,将触发getPrimaryListCompleted,以便事件处理程序可以使用响应. 其他解决方案 创建一个新的ServiceClient称为客户端. 将事件处理程序添加到客户端,以便自动调用函数AddPrimar
16 2024-04-26
编程技术问答社区
如何使用 C# 服务更改壁纸
我希望使用C#服务设置Windows 7的墙纸. 当服务作为控制台应用程序运行时,这很好.但 安装服务并启动它之后,然后在 壁纸.任何人都有一个想法如何在窗口内设置墙纸 服务? 这是我的代码: private String file = @"C://Users//Alvin//Pictures//onepiece.jpg"; /// /// Set things in motion so your service can do its work. /// protected override void OnStart(string[] args) { SetWallpaper(file, 0); } private void SetWallpaper(string WallpaperLocation, int WallpaperStyle) { try { // Sets the actua
10 2024-04-26
编程技术问答社区
如何使WCF接口利用服务中声明的变量
我最近遵循MSDN教程在这里 WCF服务.我现在担心的是如何访问CalculatorWindowService中在CalculatorService中声明的变量希望将结果存储在CalculatorWindowService 中声明的List DoubleList中 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.ServiceModel; using System.ServiceProcess; using System.Configuration; using System.Configuration.Install; namespace Microsoft.ServiceModel.Samples { // Define a service con
18 2024-04-26
编程技术问答社区
需要帮助在不重启的情况下重新安装一个Windows服务
我在Visual Studio 2010中创建了一个新的Windows Service项目,并为事件查看器添加了一些代码以输出信息.每次我进行一点更改时,我都会做以下操作: 停止服务 卸载服务 关闭我的服务窗口. 确保任务管理器中没有MMC运行的实例 重新安装服务 当我尝试步骤5时,它会失败.如果我尝试再次卸载它,我将获得"此服务已被标记为删除".如果没有重新启动,我将无法再次安装服务.这是非常不便的. 我有在线搜索,这就是我包括步骤3和4的原因.这只是对我而言并不适用.问题必须在我的计算机上,因为我没有问题卸载并在VM实例上安装服务. 我在Windows 7上,在Visual Studio 2010上的C#中写下我的服务. 解决方案 您实际上不需要为每一个小更改卸载服务.您只需要确保服务已完全停止,就可以覆盖构成服务的DLL,然后再次开始. 其他解决方案 而不是通过手动过程描述从命令提示符运行以下内容: sc delete [服务名
2 2024-04-26
编程技术问答社区
使用多线程可能导致内存使用过量
我有一个Windows Service项目,该项目将消息记录到数据库(或其他位置).这些消息的频率可能每秒十个.由于发送和处理消息不应延迟服务的主要过程,因此我启动了一个新线程以处理每个消息.这意味着,如果主要进程需要发送100个日志消息,则启动了100个线程该过程.我了解到,完成线程后,它将被清洁,因此我不必处置它.只要我将所有用过的对象处置在线程中,一切都应该正常工作. 该服务可能会导致关闭服务的例外.在服务关闭之前,应该等待所有记录消息的线程.为此,每次启动线程时,都会将线程添加到列表中.当调用等待线程方法时,如果还活着,请检查列表中的所有线程,如果是,则使用加入等待. 代码: 创建线程: /// /// Creates a new thread and sends the message /// /// privat
8 2024-04-26
编程技术问答社区
C#: 服务访问运行sql语句的dataprovider类|正确的方法?
这是常见和/或好方法吗? 在我的ViewModel(WPF)或演示者(Winforms)中,我这样做: ICustomerService customerService = MyService.GetService(); ICustomerList customerList = customerService.GetCustomers(); 客户服务类看起来像这样: public class CustomerService : ICustomerService { public ICustomerList GetCustomers() { return _customerDataProvider.GetCustomers(); } } public class CustomerDataProvider() { public ICustomerList GetCustomers
8 2024-04-26
编程技术问答社区
Windows服务NullReferenceException C#
我正在尝试创建一个Web API服务,但是当我试图以服务运行时,我会得到NullReferenceException.如果我删除ServiceBase部分,它的运行良好.如果我替换线程不做任何事情,那么它照常工作. 什么可能导致NullReferenceException? namespace WebApi { public class Program { public static void Main(string[] args) { //To Debug //BuildWebHost(args).Run(); //To Run as Service using (var service = new TestService()) { ServiceBase.Run(
16 2024-04-26
编程技术问答社区
是否可以将简单字符串转换为 SOAP 消息并发送?
目前我想知道,在C#中可以读取字符串并将其转换为SoapMessage并将其发送到服务器进行处理,然后再次将响应转换为字符串? ? 解决方案 您的代码应该看起来像: var document = Query(user, pass, date, regc); var webRequest = Request(Url, Action, document); var soapResult = Response(webRequest); happiness = soapResult.Deserialize(out result); 查询: internal static string Query(string user, string pass, string date, string regc) { var doc = string.Format(@"
10 2024-04-25
编程技术问答社区
WCF 服务:更新后方法类型更改为响应/请求
我显然遇到了更新WCF服务的问题在VS2022中.由于链接上的建议,我设法更新了它,但它改变了我的所有方法.现在,该方法不是一个具有4个参数的方法,而是具有1个类型的" methodrequest"的参数,该参数本身具有该参数的4个值.我如何恢复旧方法类型? 新方法: 旧方法: 解决方案 终于暂时发现了解决方法. 下载在我的情况下,在连接服务文件夹中打开CMD并使用 dotnet-svcutil http://127.0.0.1:8080/DeliveryService/?Wsdl -d "NewDeliveryService" -n "*, DeliveryService" -syn 它可以用我需要的一切创建一个新服务,然后我手动覆盖旧的参考文件(我不习惯CMD的东西).重要内容:-n是您用来给它的命名空间.如果您使用同步方法,则需要-sync.希望它能帮助别人.
12 2024-04-25
编程技术问答社区
在一个Windows服务中转换我的应用程序
我已经创建了一个使用多个项目的解决方案.我有一个项目是WPF应用程序.该应用程序与服务与逻辑应用程序进行通信.该应用程序将所有流量重定向到不同的管理人员的特定对象.这些经理通过几个课程与数据库进行通信.该解决方案中的另一个项目是,例如可以与我连接的一些硬件通信的项目. 如何将此解决方案(减去WPF应用程序?)转换为Windows服务?因此,所有的事情都在运行硬件通信和数据库保存,我可以随时启动WPF UI以配置某些设置. 我不太了解安装程序包装的工作原理.我创建了一个创建中央逻辑类实例的服务.此实例只能创建一次,并实例化此类确保启动其他管理器类,以及数据库Handler类和处理外部硬件事件的类.因此,简而言之,在实例化中心逻辑类时,该应用程序应起作用.因此,在启动服务时,应该完成所有工作,就是实例化该类别. WPF UI应用程序仅用于配置,不一定需要. 如何为此创建此类服务并为此创建安装程序?似乎以下代码还不够: protected override void O
6 2024-04-25
编程技术问答社区
有没有一种方法可以让一个后台进程打开一个用户可见的窗口?
我正在编写一个仅在远程命令上启动的网络广播应用程序. 我从Windows Service开始,从一个侦听器开放Winform,但很快就意识到这不再起作用,因为出于某种安全原因,服务不再在Session#0中更改UI. 我的下一个想法是拥有系统托盘应用程序而不是Windows服务.在我开始这条道路之前,有更好的方法吗?系统托盘中没有功能的图标似乎是无关的,尽管我想我会出现无形过程的安全问题. tl; dr是否有一种方法可以使某种类型的背景过程打开用户可见窗口? 解决方案 否!* . . *至少在与Windows的较新版本 兼容时没有 edit2:我最终使用了系统托盘应用程序方法,它的工作正常
10 2024-04-25
编程技术问答社区
检测网络变化事件的Windows服务
我需要在C#中创建一个事件侦听器,该侦听器将使用户知道何时发生网络更改(例如新的IP地址).我已经尝试进行研究以寻找不同的方法来做到这一点,但是我没有看到如何在C#中专门完成此操作并完成我需要完成的所有任务.我正在使用此处提供的信息来构建听众, http:http://msdn. microsoft.com/en-us/library/zt39148a.aspx#y570 ,但这也对我不起作用.对我来说,投票可能是最好的选择,但是如果有人可以提供帮助,这将不胜感激.我在XP和.NET 4.0上操作. 解决方案 您可以在服务中收听网络查看事件: public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) {
12 2024-04-25
编程技术问答社区
服务结构中无状态服务的服务解析器
每当我尝试解决无状态服务的终点时,我似乎都会继续获得"无法找到的服务".我尝试使用服务分区解析器以及服务代理,但它们都产生相同的结果.服务面料是否存在限制,还是我误解了如何使用无国籍服务?我找不到任何一种文档说明任何一种方式. 提供更多有关我正在尝试做的事情的详细信息.我正在建造一个API网关. API网关由注册服务和RoutingService组成. 我有多个服务面料应用程序,其中一些具有使用WebAPI和OWIN的"前端"无状态服务.在启动时,这些服务将其路线注册到注册服务. 网关使用注册服务来确定将请求引导到的服务.在这一点上,我试图解决上述服务的终点,但没有这样做.但是,如果我将路由更改为状态的后端服务,则可以正常工作. 任何想法都会非常有帮助 解决方案 因此,对于其他任何来这里的人来说.似乎这不是一个问题.重置SF群集修复了它. 其他解决方案 您可以运行此代码以发现群集内运行的所有端点.使用此信息,您可以通过查找服务的姓名和分区策略来找出
12 2024-04-25
编程技术问答社区
C#中的Windows服务应用程序
我创建了Windows Service application using c#.我已经遵循了这 MSDN文档,但该服务未在Computer -> Manage -> Service pane的"服务"部分中列出. 我想念什么吗?它的Windows 7. 想运行我的服务以检查功能. 谢谢 解决方案 您需要为Windows Service Control Manager(SCM)安装服务以了解它(借助结果注册表条目). 您有(至少)两个选择: sc create "SERVICENAME" binpath = "C:\whatever\Service.exe" installutil "C:\whatever\Service.exe" 对于sc create,任何命令提示都应执行.对于installutil,Visual Studio命令提示符是运行它的最简单方法 - 因为VS命令提示符的PATH环境变量使使用.NET命令行工具变得容易;根据我的
12 2024-04-25
编程技术问答社区
如何在web服务中发布json对象
任何人都可以帮助我,如何使用C#将JSON对象发布到Web服务?实际上,我正在尝试在C#中验证App Store交易收据. 请按照此链接具有足够的想法. 如果您有一些想法或知识,请帮助我. 预先感谢 解决方案 string receiptData = "(receipt bytes here)"; string url = "https://buy.itunes.apple.com/verifyReceipt"; HttpWebRequest oneWebRequest = (HttpWebRequest)WebRequest.Create(url); oneWebRequest.Method = "POST"; oneWebRequest.ContentType = "application/json; charset=utf-8"; string json = "{ \"receipt-data\": \"" + receiptData + "\" }
20 2024-04-25
编程技术问答社区
从Windows服务中启动网络浏览器
是否可以从Windows服务启动Web浏览器?我已经在C#中创建了一个基本服务,并在" Localsystem"的安全配置文件下安装了它. 服务的代码如下: namespace Bootloader { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { string target = "http://www.microsoft.com"; System.Diagnostics.Process.Start(target); } protected ov
10 2024-04-25
编程技术问答社区
FilterGetMessage是错误的?
我正在写Windows服务,以与Minifitter(内核)进行通信. 使用 fltSendMessage 在minifitter中 使用 filtergetMessage 在服务中 filtergetMessage的状态是成功(状态= 0).但是缓冲区始终为空. 什么是不正确的? 这是我在Minifilter中的代码:C ++代码 status = FltSendMessage( gFilterHandle, &gClientPort, (PVOID)FltObjects->FileObject->FileName.Buffer, FltObjects->FileObject->FileName.MaximumLength, NULL, NULL,
4 2024-04-25
编程技术问答社区
从Delphi DLL到C#的回调只在空闲的winform或使用app.doevents时有效?
我放弃,我必须写和问;我正在使用Delphi编写的非托管DLL,每当发生在硬件中发生一个事件时,它会异步调用(无参数)回调. . 我在C#中所做的是我对创建的委托保持静态引用,然后将其作为参数传递给Delphi侧的开始方法.这告诉DLL使用回调,只要有新数据要使用getData方法,请使用回调通知我. 都可以正常工作,很好,直到我尝试在控制台应用程序或Windows服务中做完全相同的事情.或者,如果我在单独的线程上创建并调用与DLL相关的方法,而又不让该线程旋转执行Application.doevents().通常,有类似问题的人似乎在GC或召集惯例上遇到了问题,但是(试图)通过保持代表裁判来确保对GC问题的确定,我没有任何解决方法的建议. 我假设我错过了CLR如何调用DLL调用以连接到我的回调处理程序的thunk之后如何调用我的回调的最重要的东西. 我的dll进口声明看起来像: [DllImport("TheDelphiApi.dll", Cal
10 2024-04-24
编程技术问答社区