(原创)利用vs.net快速开发windows服务(c#)

在很多应用中需要做windows服务来操作数据库等操作,比如
(1)一些非常慢的数据库操作,不想一次性去做,想慢慢的通过服务定时去做,比如定时为数据库备份等
(2)在.net Remoting中利用windows服务来做Host

利用vs.net我们可以在几分钟之内建立其windows服务,非常简单

下面说一下步骤
1. 新建一个项目
2. 从一个可用的项目模板列表当中选择Windows服务
3. 设计器会以设计模式打开
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer) 
5. 设置Timer属性,Interval属性200毫秒(1秒进行5次数据库操作)
6. 然后为这个服务填加功能
7.双击这个Timer,然后在里面写一些数据库操作的代码,比如
 SqlConnection conn=new SqlConnection("server=127.0.0.1;database=test;uid=sa;pwd=275280");
   SqlCommand comm=-new SqlCommand("insert into tb1 ('111',11)",conn);
   conn.Open();
   comm.ExecuteNonQuery();
   conn.Close();

8. 将这个服务程序切换到设计视图
9. 右击设计视图选择“添加安装程序”
10. 切换到刚被添加的ProjectInstaller的设计视图
11. 设置serviceInstaller1组件的属性: 
    1) ServiceName = My Sample Service
    2) StartType = Automatic (开机自动运行)
12. 设置serviceProcessInstaller1组件的属性  Account = LocalSystem
13. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)
14. 执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,使它建立一个合适的注册项。(InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)
15. 右击桌面上“我的电脑”,选择“管理”就可以打计算机管理控制台
16. 在“服务和应用程序”里面的“服务”部分里,你可以发现你的Windows服务已经包含在服务列表当中了
17. 右击你的服务选择启动就可以启动你的服务了
看看数据库是不是一秒多了5个记录啊

需要注意的是:
如果你修改了这个服务,路径没有变化的话是不需要重新注册服务的,如果路径发生了变化,需要先卸载这个服务InstallUtil.exe /u参数,然后再重新安装这个服务,不能直接安装。还有就是windows服务是没有界面的,不要企图用控制的输出方式来输出一些信息,你只能添加一个EventLog,通过WriteEntry()来写日志。

关于怎么用windows服务来做一个远程服务可以看一下http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp

posted @ 2005-03-25 13:19 lovecherry 阅读(11236) 评论(29)  编辑 收藏 所属分类: webservice&remoting&WCF

  回复  引用  查看    
#1楼[楼主]2005-03-28 17:38 | k      
也太简单了吧
  回复  引用  查看    
#2楼2005-05-17 14:10 | 一颗色儿      
要被我的机器气疯了。
近来不知怎么回事,Account = LocalSystem的时候怎么都不能启动服务,只能设成./administrator
然后添加一个EventLog,通过WriteEntry()来写日志也不成功。
还有安装的Messaging.MessageQueue怎么删也删不掉。。。

难道真的要我重装机器?

  回复  引用    
#3楼2005-10-18 09:36 | 天仇[未注册用户]
我按照上面的作了一遍,不知道是哪步做错了。在 执行命令“InstallUtil.exe MyWindowsService.exe”的时候,提示错误: 在“安装”阶段发生异常。System.ComponentModel.Win32Exception:指定的服务已存在。…………受影响的参数是: assemblypath=e:\windowserver\bin\debug\mywindowserver.exe
logfile=e:\windowserver\bin\debug\mywindowserver.InstallLog
…………
已完成事务处理安装
安装失败,已执行回滚。
知道的大虾告诉我一下

  回复  引用  查看    
#4楼[楼主]2005-10-18 09:41 | lovecherry      
先用-u卸载服务,或者换个服务名,服务已经存在
  回复  引用    
#5楼2005-10-18 15:46 | 天仇[未注册用户]
太感谢了。问题总算解决了。不过我 又建了一个windows服务程序后,发觉这两个服务不能并存,当服务里有个服务后,再次执行命令“InstallUtil.exe “的时候, 提示仍然是:指定的服务已存在。他们生成的exe文件名、路径都不一样。”或者换个服务名“,到底哪个才算是服务名呢。再次请教一下
  回复  引用  查看    
#6楼[楼主]2005-10-18 16:00 | lovecherry      
11. 设置serviceInstaller1组件的属性:
1) ServiceName = My Sample Service
2) StartType = Automatic (开机自动运行)

这里的1)就是服务名字这个不能相同

  回复  引用  查看    
#7楼2005-12-12 02:12 | hyde      
TO:天仇
貌似和CLSID或者PUID有关吧

  回复  引用    
#8楼2006-01-24 11:35 | 方[未注册用户]
提示:“无法验证的图象”
怎么回事?

  回复  引用  查看    
#9楼2006-03-25 17:39 | 仰天一笑      
写的很好,我已收藏,但是请仁兄把sql写正确
  回复  引用    
#10楼2006-04-12 10:51 | 和平[未注册用户]
弹出一对话框,要求输入用户名跟密码
我输入之后出现以下错误,没装上。
System.ComponentModel.Win32Exception

  回复  引用  查看    
#11楼[楼主]2006-04-12 11:40 | lovecherry      
设置serviceProcessInstaller1组件的属性 Account = LocalSystem

  回复  引用    
#12楼2006-04-12 12:56 | 和平[未注册用户]
不错,已解决。谢谢。
  回复  引用    
#13楼2006-04-12 12:56 | 和平[未注册用户]
不错,已解决。谢谢。
  回复  引用    
#14楼2006-06-08 11:03 | computer_li[未注册用户]
`
  回复  引用    
#15楼2006-08-05 16:45 | tianke3477[未注册用户]
能够在服务看见安装的服务,但是不能启动

提示:无法启动这个服务
错误 1053:服务没有及时响应启动或控制请求

请问这个可能是什么原因造成的

  回复  引用    
#16楼2006-08-17 15:07 | Judith[未注册用户]
我在定时器里的代码怎么不执行呢?
  回复  引用    
#17楼2006-10-08 17:02 | 鹏万里程[未注册用户]
我的在安装时候出现:
System.ComponentModel.Win32Exception: 帐户名无效或不存在,或者密码对于指定的帐户名无效
我用的是VS2005

  回复  引用    
#18楼2006-10-08 17:03 | 鹏万里程[未注册用户]
恳求哪位大侠帮忙
  回复  引用  查看    
#19楼[楼主]2006-10-08 17:21 | lovecherry      
选择loalservice啊
  回复  引用    
#20楼2006-11-07 16:56 | realism[未注册用户]
我用C#写了一个windows服务,在里面调用了其它DLL里写的方法,那个DLL也是C#写的,结果在连数据库的时候总是出错(但是WEB页面调用的时候没有问题),连接数据库信息是放到哈希表里的做为全局变理,而且写连接信息的类用了序列化,我都快晕了,不知道这是什么原因。
  回复  引用    
#21楼2007-07-21 10:44 | 原来的我[未注册用户]
请教大虾:
我的Timer设置的是10秒,当下一次又开始执行的时候,我想判断上次的程序执行完了没有,要是没有,这次就不执行了。这个我该怎么写呢? 各位帮帮忙。
谢谢了。

  回复  引用    
#22楼2007-07-21 10:56 | 原来的我[未注册用户]
再问一下,我看到我写的这个服务,执行的时候。会出现很多相同的进程,我想下次执行的时候,判断时候存在这个进程。要是存在就跳出了,这个该怎么判断啊? 谢谢了。
  回复  引用    
#23楼2007-07-23 10:36 | 安康觉得上[未注册用户]
香业走向世界,开展跨国业务,提升企业国际形象的捷径。成立跨国公司和集团公司,注册香港公司不仅可更好地提高形象及带来更好的经济效益,并在某些合同签署时,项目谈判往往需要海外公司的配合及参与,对提高企业的信誉并顺利到达谈判目的,是不可缺少的因素。到海外注册,可以方便资本重组和分离,提高资信,也方便曲线上市。
4、注册香港公司程序便捷、开放,成本低廉:离岸公司的注册程序非常简单,可办专业的注册代理机构代为完成,无须注册人亲临注册地,而且注册后不须将资金打到国外公司,每年亦不须验资。
5、合法避税,降低财务、税务负担:有离岸法区均不同程度地规定了离岸公司所取得的营业收入和利润免交当地税或以极低的税率(如 1% )交纳。有的甚至免交遗产税。可利用海外公司妥善安排税务,合理合法避税。
6、简便的公司管理:离岸公司无须每年召开股东大会及董事会,即使召开,其地点也可任意选择,管理程式简单,即可轻装上阵,把全部精力投入到公司经营管理中。
7、公司注册资料及文件高度保密:为了吸引外国企业来注册,不少大洋岛国规定,在当地注册公司的股本构成、董事名单甚至公司营业情况,都可以保密,这使得公司状况得到高度保密,公众人士不能查阅,只有合法取得对离岸公司进口监管资格的信托管理公司才可以查阅公司的背景资料。注意:由于迫于美国等国家恐怖威胁的压力, BVI 群岛公司 , 已经由完全保密股东变作有条件保密 , 如今完全保密资料的只有马绍尔群岛
8、无营业范围和地区范围的限制:除了个别限制性行业,比如银行、保险、军事等,海外离岸公司的经营范围几乎没有限制。除注册地区外,公司可在世界任何国家地区开展业务及经营。
9、对投资人、股东、董事没有限制:对股东和董事的国籍、年龄、资产等均没有限制,大多“离岸”区可以接受法人出任公司董事一职。
10、企业向海外扩展、反向投资:将自身发展与国际市场接轨,实施反向投资,参与国际竞争,寻求企业进一步发展。这对于政治不稳或人治多于法制的国家尤其重要。
11、拥有国际品牌、提高企业效益:根据公司产品特性,选择海外公司注册地,如:高科技产业、仪器、设备、保健食品、化妆品、成衣等知名厂商多为美国公司,若在美国成立一家公司后,在以美国公司之名义授权给大陆、香港、东南亚等地生产。不仅提高了产品形象,同时提高销售附加值。
12、方便外汇结算及信用证押汇:不仅可以在境外开立帐号,也可以在国外的外资银行开立离岸帐号:储蓄户、支票户、信用证户、电话银行户等结算、汇兑、提现等自由。
13、移民及签证便利:海外公司的法人代表,可以方便来往于国际各国,因为这些海外注册地一般都是英美法德系属的国家,持有它们的签证,去大国商旅顺理成章。
14、用离岸公司注册商标及持有版权,保护无价资产。

【注册香港公司的缺点】
虽然离岸公司有如此多的优势,但也存在着一定的风险: 离岸公司的一个重要特点就是其高度的保密性,所以,与离岸公司进行业务往来可能会发生特殊的风险,对此企业在交易中应特别注意风险防范。
§对离岸公司的资信能力调查困难:注册地对离岸公司的宽松的管理制度,使得想从离岸公司的注册地全面获得离岸公司的资信情况几乎是不可能的,因为注册地对离岸公司严格的保密制度,即便注册地当地政府也难以了解公司的真实情况。
§香港公司的业务伙伴难以了解其真实的资产负债状况:因为离岸公司的财务状况是不对外公开的,。由于离岸公司的财务状况不够透明,境内银行向离岸公司提供贷款,或者企业与离岸公司订立合同都应保持谨慎。
§由于在离岸法域注册国际商事公司极为便利,无最低资本要求,数目小且不需要严格审查和提供资质文件,这一点极容易被某些不法投机分子所利用,一旦这类公司在我国开办的外商投资企业发生资金抽逃、不良债务等问题,则不可能在离岸地找到该公司,更不可能追回欠款。
因此,我国企业在与离岸公司合作时,要特别注意,对对方的调查应尽可能深入,订立合同应该尽可能详尽并积极敦促对方履行,利益攸关时要求对方提供担保等就更显得重要。
来源:www.registersh.com


  回复  引用    
#24楼2007-09-20 10:45 | 小谭[未注册用户]
为什么我写的服务只是启动时执行一次啊!明明设置了timer的interval=200
  回复  引用    
#25楼2008-08-06 17:10 | 陌生人[未注册用户]
“执行命令“InstallUtil.exe MyWindowsService.exe”注册这个服务,”
这句话中怎样执行命令啊?谢谢了

  回复  引用  查看    
#26楼2008-12-23 14:35 | virus      
C:\SharePoint_WF\Kimbanx.UCS.News\NewsEexpireWindowsService\bin\Debug>InstallUti
l.exe NewsEexpireWindowsService.exe
Microsoft (R) .NET Framework Installation utility Version 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

在初始化安装时发生异常:
System.BadImageFormatException:文件“NewsEexpireWindowsService.exe”的格式无效
。。

  回复  引用    
#27楼2009-01-07 16:45 | xxnin[未注册用户]
很奇怪,我做了一个Windows服务来侦听UDP广播.
无论如何也收不到UDP消息.
但是我把代码使用Windows Form形式来运行就可以正常执行.
有碰到这种问题么?




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 125527




相关文章:

相关链接: