如何在Windows Service C#中使用SetClipboardViewer函数?
我正在尝试使用setClipboardViewer获取剪贴板事件. 当我覆盖函数时,它以窗口形式工作: 受保护的覆盖void wndproc(参考消息m) 属于基类系统.Windows.forms. 问题是我想在Windows服务中进行. 有人知道如何在窗口中获取剪贴板事件 服务? 谢谢. 解决方案 剪贴板属于会话(实际上是会话的winstation ),并且没有交互式用户可以在服务会话中进行剪贴板副本.当然,您可以使用剪贴板侦听器流程来中继剪贴板从交互式会话中更改.您可以使用整个会话中有效的任何协议,例如插座,共享内存或命名管道.在像一个一样,尽管它通过WTS虚拟频道发送数据. 越过会话边界时某些剪贴板内容有意义(例如CF_TEXT),有些剪贴板没有(例如,带有映射驱动器的路径的cf_hdrop).
8 2024-04-26
编程技术问答社区
C# 窗口服务-暴露网络界面
我创建了一个曝光Web接口的Web服务. 服务以控制台模式运行,我看到了Web界面 public ServiceHost serviceHost = null; public ServiceHost serviceHost = null;; private readonly TestService s; public Service() { InitializeComponent(); s = new TestService(); } protected override void OnStart(string[] args) { Logger.Info("Start event"); if (serviceHost != null) { serviceHost.Close(); }
12 2024-04-26
编程技术问答社区
插座服务器一直在听
需求是服务器套接字应一直接受客户端连接(Windows Service应用程序).以下是几个小时正常工作的代码,但是一段时间后接受根本不起作用.为了保持接受,我还拥有每10分钟连接服务器的线程.通过这种方式,我知道服务器插座在一段时间后停止(几个小时) public void StartReceiveNotification() { if (!isStarted) { try { byte[] bytes = new Byte[1024]; var ips = Dns.GetHostAddresses(Dns.GetHostName()); var myAddress = ips.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork); assigningIp
6 2024-04-26
编程技术问答社区
监控Windows中的应用程序文件访问
我需要监视WIN 7操作系统中的应用程序访问.我想监视哪种软件在哪个位置读取,编写或创建文件.我认为,这项工作对文件系统观察者和审计不可能.我该如何与C#一起工作?是否有适当的API? 解决方案 您需要一个文件系统过滤器驱动程序,以进行细粒度监视和跟踪应用程序访问文件.开发内核模式驱动程序需要C编程和特殊知识.您可以自己写一个驱动程序(阅读MSDN文章)或使用我们的 callbackfilter 产品(它提供了预先创建的驱动程序和.NET API,并与您的软件集成).
6 2024-04-26
编程技术问答社区
在.NET 1.1中,如何将用户凭证从一个进程传递到另一个进程以实现冒充?
我有一个在特定的用户帐户下运行的Windows服务(以.NET 1.1编写),并且在多个服务器上运行的服务实例. 我想将用户凭据(用户名,密码,域)传递给Winforms应用程序的服务,并在服务器的本地文件系统中读取/写入服务,以模仿传递的凭据. 传递用户名,域和密码并使Windows服务执行模仿更好吗?我看不到如何序列化Windows Identity并将其作为参数传递以获得服务,然后在I/O周围执行模仿()和dusto(). 作为一个容器对象,System.net.networkcredential不标记为序列化,因此传递三个单个参数似乎是逻辑的.我本质上是在 解决方案 简短的答案是:不要通过凭据.这种方法是不安全的. 相反,您应该寻求利用OS提供的安全机制来实现您想要做的事情.它称为SSPI(安全支持提供商接口).使用此过程,该过程交换了OS级安全提供商生成的一系列令牌,以设置安全上下文,而无需在用户模式代码中传递凭据. 如果您能够升级服务以使用.N
10 2024-04-26
编程技术问答社区
Windows帐户应运行的哪个Windows帐户访问网络SQL服务器
我正在考虑创建一个可以定期运行并查询网络数据库并将信息存储在本地计算机上的Windows服务(请不要询问为什么!). 当没有人登录本地计算机时,我希望这项服务可以运行.该服务应在LocalService,Localsystem或网络下运行什么帐户. 将向包括本地的所有网络数据库提供用户名和密码. 解决方案 我可能会创建一个特定的域帐户,并授予SQL Server和您要使用的任何本地商店的权利.如果您想使用SQL凭据连接到数据库,则可以是本地帐户(可以访问本地资源)或更高的特权用户(例如本地资源). 其他解决方案 要确保您可以实际连接到数据库,我建议您创建一个服务帐户(类似/用户 - 并应用不过期的密码). 这样,您可以在SQL Server中设置用户并在连接时使用集成安全性. 例如: 域:stackoverflow 服务:searchDB 我将创建一个用户stackoverflow \ searchdbuser 基本上,在设置Windows服
4 2024-04-26
编程技术问答社区
如何使用其他ARG进行编程安装Windows服务?
我正在尝试通过安装程序的自定义操作通过C#安装服务. 我已经跟踪了与堆栈跨流有关我的问题有关的大多数主题,但是我未能找到解决问题的解决方案. 问题是:我需要将其他参数传递给我的服务,以下是cmd.exe中的样子: my_service -installMY_SERVICE_NAME cmdLine="commands in here" auxCommands="aux commands in here" net start "My Service (MY_SERVICE_NAME)" 如果我是从命令行进行的,但是我无法在C#中完成它,因此我被迫寻求帮助 问候 解决方案 听起来您想通过C#命令行启动服务并传递其他参数. process.start 有命令行的参数争论.尝试一下 Process.Start("my_service", "-install MY_SERVICE_NAME cmdLine=\"commands in here\"" aux
0 2024-04-26
编程技术问答社区
关于使用c#创建一个windows服务的资源
任何人都知道任何可以使用C#创建Windows服务的好资源和文章. 谢谢 解决方案 我建议您使用不同的零件Google,网络上的不同位置具有不同的信息重点(以及最新信息的级别).您需要了解这些主题: Windows Service Services Bounckerchers:服务如何在Windows中工作.请查看它们在用户界面,系统特权(该服务下运行以及其特权是什么),启动/关闭和用户反馈方面的不同. 您可能想在服务中做的一件事是使用计时器控件来执行定期任务.您在窗口表单上放置的"普通"计时器在服务中无法使用,因为该控件必须与UI窗口(服务缺少)一起使用.您必须使用System.Timer控件. Google此信息以获取更多信息.我把这个放在这里,因为您会浪费几个小时,想知道为什么您的计时器不起作用,我们所有的书面服务都经历过! 调试 - 您如何调试服务?有几个选项. 部署 - 服务的安装与Windows应用程序的安装不同,并且涉及的范围更大.这不是一个
6 2024-04-26
编程技术问答社区
在Visual Studio 2015社区中为现有C#控制台应用程序创建服务安装程序
我有一个应用程序(C#控制台应用程序). 我知道,在Visual Studio 2008中是创建"设置项目"的模板. 在Visual Studio 2015社区中,此模板不可用. VS 2015中的哪些工具可以帮助我将应用程序作为Windows服务(Windows 7中的Windows 7)打包? 解决方案 您可能需要检查VS2K15的此扩展名: 同样,学习曲线有点陡峭,但Wix被广泛接受为为Windows应用程序创建安装程序的一个很好的解决方案.在此处阅读有关它的更多信息: http://wixtoolset.org/
10 2024-04-26
编程技术问答社区
在会话打开之前,通过UNC路径访问一个windows共享。
我要做一个在用户登录之前开始的Windows服务.这也意味着该服务必须具有自己的用户名/密码.那么,如何在不被记录的情况下远程打开网络共享? 我在Windows域中,目标是使用一些配置的凭据访问我需要的远程文件. 你有一个主意吗?我只是找不到任何可以轻松访问服务器的东西 编辑:对不起,我犯了一个错误,客户端计算机不在域中,服务器为:( 解决方案 如果您无法作为相关用户运行该服务,则可以通过P/Invokes来执行代码. 连接带有用户名和密码的网络驱动器 其他解决方案 通常,您要做的就是设置服务以在命名用户(域)帐户下运行,并让该用户访问远程共享.然后访问该共享的文件,就像其他任何人一样. File.ReadAllText(@"\\SomeMachine\SomeShare\Something.txt");
10 2024-04-26
编程技术问答社区
打印作业接受和路由软件
我想创建一个可以从其他计算机中接受打印作业的软件,然后将这些打印作业路由带有打印机的LAN上的PC. 它将如何发生 - > 1-当在计算机" X"上安装该软件称为"虚拟打印机"时,Windows应该认为它是该计算机的打印驱动程序/附加打印机. 2-然后,该PC的管理员转到Windows中的"设备和打印机",然后选择"虚拟打印机",右键单击并查看属性,然后选择复选框"共享此打印机" 3-现在,LAN上的其他PC可以看到连接到计算机" x"的LAN中有一个共享打印机调用"虚拟打印机" 4-因此,他们可以通过选择"虚拟打印机"时将打印作业发送给此"虚拟打印机". 我如何编写此程序(可能是C#)以作为窗口的打印机出现,然后接受传入的打印作业并将其发送给带有打印机的所需计算机. 我不知道该如何编码此内容,而且我也不知道,请帮助我使用一些资源,代码或示例项目或至少与此类似的样本. 谢谢 解决方案 根据您最初的问题,回顾我的第一个答案,我不再理解为什么我如此强调"将传入的工作
12 2024-04-26
编程技术问答社区
当产生更多的新进程时,进程.启动缓慢
通过Process.Start启动的过程似乎在产卵过程("孩子")启动更多新过程("孙子")时似乎有大约26秒的延迟 - 我正在尝试找到一种解决此问题的方法问题.具体而言,这是在原始过程("父")是ASP.NET网站或Windows服务(两者都尝试过)时发生的. 我们正在尝试运行服务器端命令行工具,以收集信息,在文件系统中进行修改,并在"孩子"完成后继续执行其他过程.直接通过命令行创建"孩子"时,没有延迟,并且对于某些命令行参数,"孩子"不会产生新的过程,也没有延迟.但是,使用其他参数,"孩子"产生了"孙子"(与本身相同,但我们无法修改其代码),并且似乎在第一个过程是25-30秒(通常是26秒)延迟开始,然后正常运行. 我尝试修改UseShellExecute属性,CreateNoWindow属性和WindowStyle属性,均无效. ErrorDialog和RedirectStandard*属性是错误的. 我正在使用的代码如下: using (Process p
12 2024-04-26
编程技术问答社区
监测网页变化的.NET服务
我想创建一个服务,该服务将监视对网页的更改,即页面内容已更新.我正在尝试考虑实现这一目标的最佳方法,目前我正在考虑一些选择.请注意,可以监视数百个页面,并且检查间隔可能是秒或小时(可配置). 为每个页面创建Windows服务以监视 创建一个Windows服务,该服务为每个页面催生一个线程以监视 现在,我担心哪种是最好的方法,以及这些方法是否是我尚未考虑的替代方法.我认为1将有隔离每个监视任务的好处,但在物理资源和创建/维护的努力方面,以牺牲开销为代价.第二个会更复杂,但更干净.显然,如果服务失败,那么所有监视都会失败. 解决方案 我做了类似的事情,我通过持续的队列(SQL Server表)解决了它,该队列将在上次运行时将远程URI与间隔和DateTime一起存储. 我可以通过选择具有lastrun + Interval 如果您的最小间隔位于秒的区域,则可能要使用螺纹池,以便可以同时发出多个请求. (请记住要相应地调整app.config中的maxConnec
2 2024-04-26
编程技术问答社区
本地计算机上的服务启动后又停止。一些服务如果不被其他服务或程序使用就会自动停止
[RunInstaller(true)] public partial class ProjectInstaller : Installer { private ServiceProcessInstaller serviceProcessInstaller; private ServiceInstaller serviceInstaller; public ProjectInstaller() { serviceProcessInstaller = new ServiceProcessInstaller(); serviceInstaller = new ServiceInstaller(); // Here we can set properties on serviceProcessInstaller //or register event handlers servic
2 2024-04-26
编程技术问答社区
试图启动新服务 - 但是有权限问题
错误: 尝试手动启动Windows服务时会得到一个弹出窗口.它说: Windows无法启动XXX 在本地计算机上提供服务.错误: 1069:由于 登录失败. 构建后事件: 解决方案中有2个Windows服务,它们具有相同的后构建事件: REM C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /u "$(TargetPath)" REM C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /i /username=.\administrator /password=blabla "$(TargetPath)" ,但由于某种原因,它只是在调试模式模式下安装的第一个服务.另一个不是(尽管后构建类似事件).因此,我从后构建事件中手动将Installutil和管理员登录和Blabla密码一起使用.确实安装了它,但是一
0 2024-04-26
编程技术问答社区
如何在系统变得空闲时运行一个.NET应用程序?
我在C#中创建了一个.NET Windows应用程序.我想在系统闲置一段时间时执行此应用程序.该应用程序是一个用户登录应用程序,即当系统在某个时候闲置时,将出现一个登录页面,其中用户使用其用户名和密码登录.然后只有用户可以继续使用系统. 我该如何解决?请帮助我在Windows应用程序中提供帮助. 我认为将应用程序作为Windows服务运行.我设法在Windows Service启动时运行了该应用程序.但是,只有在系统在Windows服务中闲置时才能触发该应用程序才能运行?我还需要在用户登录后启动计时器才能再次检查空闲时间.请提供一些代码示例. 解决方案 该系统已经具有此类功能.在屏幕保护程序配置页面上,您只需选中标题为"简历上,显示登录屏幕"的框.它可以使用组策略配置. 绝对没有任何意义. 其他解决方案 怎么样: 启动您的 hidden hidden hidden 获取系统idle time 显示您的窗户.
2 2024-04-26
编程技术问答社区
Windows服务-在运行中更新其配置文件是否可取?
根据我的标题,我想澄清:建议在.NET Windows服务运行时更新配置文件吗? 如果可能的话,它的含义是什么? 谢谢. 欢呼, 安 解决方案 这里还有其他出色的答案,但是您在问什么?您是否在询问您正在写作的服务?或关于别人的服务. 如果是关于您要写的服务,则不,在更改.config文件时没有自动重新加载.您要么必须: 重新启动服务以查看更改. 编写您的服务以使用FilesystemWatcher来查看配置文件是否已更改,然后决定要使用已更改的任何值或所有值进行操作. 如果是关于别人的服务,您将需要根据上述描述询问它们的工作方式. 其他解决方案 这应该对运行程序没有影响.在应用程序启动期间加载了配置.如果您希望这些新设置生效,则需要重新启动服务. 编辑: 更重要的是回答您的问题:当一个人在.NET中创建Windows服务(我正在使用Visual Studio 2010)时,默认情况下不会使用应用程序配置文件创建应用程序配置文件.
0 2024-04-26
编程技术问答社区
注销后在Windows服务中运行批处理文件
我在C#.NET 3.5中写了Windows服务. 它会自动启动并作为本地系统用户运行(无需登录). 如果我通过致电process.start()在服务中运行关闭批处理(shutdown -s -t 30),则直到登录到Windows之前,什么也不会发生.因此,它等待登录然后开始批处理. 是否可以以登录状态运行此批次? 问候 解决方案 每个服务应用程序都有一个属性,称为Allow Interact With Desktop,应设置True,以使您的服务能够运行Shutdown-Batch-File. 看一下这些链接: 安装Windows Service时与桌面交互 其他解决方案 您是否检查过以确保这不是许可问题?即如果服务作为管理员运行,它是否有效? 您可能还想尝试关闭此问题中提到的替代方法操作率 - 计算机from-c#.
4 2024-04-26
编程技术问答社区
C# Windows服务--本地计算机上的服务启动后又停止了?
我正在尝试创建我的第一个Windows服务,但是很遗憾...从Services.msc手动启动服务后,本地计算机上的消息开始开始,然后停止.某些服务自动停止,因为他们没有工作' 我确定我的代码中必须有一些错误... namespace ConvertService { public partial class Service1 : ServiceBase { public Service1() { this.ServiceName = "ConvertService"; this.EventLog.Log = "Application"; } static void main() { ServiceBase.Run(new Service1()); } protected override void OnStart(string[] args) {
18 2024-04-26
编程技术问答社区
C# Windows服务。该服务没有对启动作出反应
这是我第一次创建调用多个线程的Windows服务的尝试.我所做的是创建一个控制台应用程序,然后在其中添加了Windows服务和安装程序.我的代码在下面. partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { System.Timers.Timer timer1 = new System.Timers.Timer(); timer1.Interval = 10000; timer1.Start(); timer1.Elapsed += new ElapsedEventHandler(timer1_Elapsed); } public st
0 2024-04-26
编程技术问答社区