C#实现Windows 服务的制作安装和删除[转]

2023-05-16

关于C#实现windows服务的制作与安装还有删除
运行Visual Studio.NET,建立一个C#的Windows服务项目。
主程序代码:
以下是引用片段:
ContractedBlock.gif ExpandedBlockStart.gif Code
  using System; 
  
using System.Collections; 
  
using System.ComponentModel; 
  
using System.Data; 
  
using System.Diagnostics; 
  
using System.ServiceProcess; 
  
using System.Threading; 
  
using System.Windows.Forms; 
  
namespace CareEye 
ExpandedBlockStart.gifContractedBlock.gif  

  
public class CareEye : System.ServiceProcess.ServiceBase 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
private Thread MainThread; 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
/**//**//**//// 
  
/// 必需的设计器变量。 
  
/// 

  private System.ComponentModel.Container components = null
  
public CareEye() 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
// 该调用是 Windows.Forms 组件设计器所必需的。 
  InitializeComponent(); 
  
// TODO: 在 InitComponent 调用后添加任何初始化 
  MainThread = new Thread(new ThreadStart(ThreadFunc)); 
  MainThread.Priority 
= ThreadPriority.Lowest; 
  }
 
  
// 进程的主入口点 
  static void Main() 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
//System.ServiceProcess.ServiceBase[] ServicesToRun; 
  
// 同一进程中可以运行多个用户服务。若要将 
  
//另一个服务添加到此进程,请更改下行 
  
// 以创建另一个服务对象。例如, 
  
// 
  
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new CareEye(), new MySecondUserService()}; 
  
// 
  
//ServicesToRun = new System.ServiceProcess.ServiceBase[] { new CareEye() }; 
  System.ServiceProcess.ServiceBase.Run(new CareEye()); 
  }
 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
/**//**//**//// 
  
/// 设计器支持所需的方法 - 不要使用代码编辑器 
  
/// 修改此方法的内容。 
  
/// 

  private void InitializeComponent() 
以下是引用片段:
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
// 
  
// CareEye 
  
// 
  this.ServiceName = "CareEye"
  }
 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
/**//**//**//// 
  
/// 清理所有正在使用的资源。 
  
/// 

  protected override void Dispose(bool disposing) 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
if (disposing) 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
if (components != null
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  components.Dispose(); 
  }
 
  }
 
  
base.Dispose(disposing); 
  }
 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
/**//**//**//// 
  
/// 设置具体的操作,以便服务可以执行它的工作。 
  
/// 

  protected override void OnStart(string[] args) 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
// TODO: 在此处添加代码以启动服务。 
  MainThread.Start(); 
  }
 
ExpandedSubBlockStart.gifContractedSubBlock.gif  
/**//**//**//// 
  
/// 停止此服务。 
  
/// 

  protected override void OnStop() 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。 
  MainThread.Abort(); 
  }
 
  
public static void ThreadFunc() 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  
int LastHour = DateTime.Now.Hour; 
  
while (true
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  System.Threading.Thread.Sleep(
60000); 
  
if (DateTime.Now.Hour - 1 == LastHour) 
ExpandedSubBlockStart.gifContractedSubBlock.gif  

  MessageBox.Show(
"为了爱护您的眼睛,请您暂时休息5分钟并向远处眺望!""警告", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly); 
  LastHour 
= DateTime.Now.Hour; 
  }
 
  }
 
  }
 
  }
 
  }

添加安装组件:
  在设计页面上点右键,出现菜单后,选择添加安装程序。这时会出现一个新的页面,页面上有个控件 serviceProcessInstaller1和serviceInstaller1
  在 serviceProcessInstaller1中把属性Account改为LocalSystem
  在把serviceInstaller1中把属性Parent 改为serviceProcessInstaller1 ServiceName属性是管生成服务后的名子
  添加完成之后,生成一下(假设名为W2.exe)。到相应的文件夹找到生成的exe文件,找到时会发现有两个.exe用名子比较短的那个。把这个文件拷到一个好记的文件夹中如F盘根目录。
  这时就是要把个服务安装一下。进入cmd中的画面,进入Framework2.0的文件如:
  cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
  后在打
  InstallUtil f:\w2.exe 这个就安装了服务 卸载服务是 InstallUtil f:\w2.exe -u

  现在就剩启动服务了,
  到windows服务里启动你安装的服务就可以了。

转载于:https://www.cnblogs.com/qiangshu/archive/2009/11/25/1610228.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#实现Windows 服务的制作安装和删除[转] 的相关文章

  • 在 Windows 中更改文件所有者

    Windows下有没有类似Linux的APIchown http google com search q man 2 chown 摘自这里 http www perlmonks org node id 70562 http www perl
  • 0x1A 上的行读取阻塞

    我有以下文件 abcde kwakwa lt 0x1A gt line3 linllll Where lt 0x1A gt 表示十六进制值为 0x1A 的字节 当尝试在 Python 中读取此文件时 for line in open t t
  • 将.exe文件嵌入到C++程序中?

    我编写了一个 C 程序 我想在其中执行第二个程序 这是一个 exe 文件 问题是我想将我的程序作为一个文件共享给其他人 当我在互联网上搜索时 我找到了这个解决方案 只需将第二个 exe 文件作为二进制资源存储在主文件中 exe 在编译时使用
  • 使用加密 API 导入 DER 编码的公钥

    是否可以使用 MS crypto API 导入 DER 编码的公钥 那么我可以验证签名吗 我需要 MS Crypto API 的一段代码或帮助来导入 DER 编码的公钥 证书 以下三个步骤将允许您导入公钥证书 使用获取证书上下文证书创建证书
  • 为什么tcl/tkinter只支持BMP字符?

    我正在尝试在基于 tkinter 和 tcl 构建的 gui 中查询和显示 utf 8 编码字符 但是 我发现 tkinter 无法显示 4 字节字符 即大于 U FFFF 的 unicode 代码点 为什么会这样呢 实现非 BMP 字符对
  • 最后一个参数中的正斜杠会导致批处理文件目录(“%~dp0”)的路径发生更改

    我正在学习如何在批处理脚本中使用参数 并最终创建了某种用于读取参数和设置参数的模板 echo off SetLocal EnableDelayedExpansion set needextra set errstat set noflag
  • 为什么我们从 MultiByte 转换为 WideChar?

    我习惯于处理 ASCII 字符串 但现在使用 UNICODE 我对一些术语感到非常困惑 什么是多字节字符以及什么是widechar有什么不同 多字节是指在内存中包含多个字节的字符吗 widechar只是一个数据类型来表示吗 为什么我们要从M
  • Python 可执行文件:py2exe 还是 PyInstaller?

    要创建可执行文件 Windows 我假设我们应该使用其中之一 Py2exe 或 PyInstaller 它们之间有什么区别 Py2exe 和 PyInstaller 都是包装器 但我注意到以下几点差异 Py2exe 与 python2 4
  • R 脚本自动化时的不同结果

    以下命令对 pdf 文件执行 Ghostscript 这pdf file变量包含该 pdf 的路径 bbox lt system paste C gs gs8 64 bin gswin32c exe sDEVICE bbox dNOPAUS
  • RabbitMq 和“致命错误:握手失败 -handshake_decode_error”

    我正在使用 Windows Server 2012 Erlang 19 2 和 RabbitMq 3 6 6 我在使用 TLS 配置端点之间的连接时遇到问题 我已经尝试了所有关于 SO 的答案 以及所有 RabbitMq 文档here ht
  • 为什么 cygwin 无法读取我的主目录中的 .ssh/config 文件?

    我正在使用 cygwin 并且正在尝试设置 ssh config 文件 Cygwin 的文件夹位于我的 C 驱动器中 我的主目录是 C Users USER 我注意到 当我编辑 C Users USER ssh config 时 cygwi
  • 使用 IDLE 编辑的 .py 文件消失了

    我曾经有过Edit with IDLE当我右键单击时的选项 py文件 但我多次卸载 重新安装以使某些东西正常工作 但现在它消失了 我检查了注册表HKEY CLASSES ROOT and HKEY LOCAL MACHINE对于价值低于Py
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • 确定用于映射网络驱动器的域和用户名

    使用带有 SP1 的 Windows 7 Enterprise 但我希望得到适用于 Windows XP 2003 2008 Vista 7 的通用答案 从命令提示符处 我执行net use命令将 Z 驱动器映射到另一台计算机上的共享 但我
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 由于图形处理单元配置,不支持 Windows Phone 模拟器(Mac 上的 Windows 7)

    启动 Windows Phone 模拟器时出现错误 不支持 Windows Phone 模拟器 因为您的计算机没有所需的图形处理单元配置 如果没有图形处理单元 XNA 框架页面将无法运行 您想继续启动模拟器吗 当我尝试访问网页 任何网页 时
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 如何从Windows阻止社交媒体[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想根据时间阻止我的电脑上的社交媒体 晚上 9 点后屏蔽 上午 11 点后解锁 如家长控制 我尝试过关注但失败了 创建了

随机推荐