为Windows Service添加服务描述

作者完成了一个实现分布式呼叫计费控制功能的Windows服务开发与测试。之后发现服务描述为空,通过浏览微软MSDN找到修改方法,即使用ChangeServiceConfig2函数,并给出了具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    实际工作中,需要编写一个Windows服务,以实现分布式呼叫计费控制功能,当然,这个项目是由偶来完成啦,经过了俩周的开发终于被偶一举搞掂!再经过多次测试-修复-登记缺陷-再测试之后,一切OK了!

    哈哈…………:)

    高兴之余,在Windows服务浏览器中无意中发现,我的服务PP(指服务描述)后面怎么是空的!:(这玩意儿可是关键东东,也是公司形象问题嘛,何况要是没有它服务怪不好看的,是吧?哈哈。之后的工作就是浏览偶公司那正正版版的微软MSDN,好不容易找到能够让偶修改的方法了。先说声“再见”,因为下面代码展示完后偶就要结束文章了,嘿嘿。

方法:ChangeServiceConfig2函数,具体实现如下:

void ReconfigureService(LPSTR lpServiceName, LPSTR lpDesc)
{
  SC_HANDLE schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  if (schSCManager != NULL)
  {
    // Need to acquire database lock before reconfiguring.
    SC_LOCK sclLock = LockServiceDatabase(schSCManager);
    if (sclLock != NULL)
    {
      // Open a handle to the service.
      SC_HANDLE schService = OpenService( 
          schSCManager,           // SCManager database 
          lpServiceName,          // name of service 
          SERVICE_CHANGE_CONFIG); // need CHANGE access
   
      if (schService != NULL)
      {
          SERVICE_DESCRIPTION sdBuf;
          sdBuf.lpDescription = lpDesc;
          if (ChangeServiceConfig2 (
                    schService,
SERVICE_CONFIG_DESCRIPTION, &sdBuf))
          {
             //MessageBox(NULL,"Change SUCCESS","",MB_SERVICE_NOTIFICATION); 
          }
          CloseServiceHandle(schService);
      }
      UnlockServiceDatabase(sclLock);
    }   
    CloseServiceHandle(schSCManager);
  }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值