1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. Windows,
  7. WinSvc;
  8.  
  9. type
  10. SERVICE_DESCRIPTION = packed record
  11. lpDescription: PWChar;
  12. end;
  13. PSERVICE_DESCRIPTION = ^SERVICE_DESCRIPTION;
  14.  
  15. function QueryServiceConfig2(hService: THandle; dwInfoLevel: DWORD; lpBuffer: Pointer; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): LongBool; stdcall; external 'advapi32.dll' name 'QueryServiceConfig2W';
  16.  
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Procedure : SysErrorMessage
  19. // Comment : Returns last error as formated string
  20.  
  21. function SysErrorMessage(ErrorCode: Integer): string;
  22. var
  23. Len: Integer;
  24. Buffer: array[..]of Char;
  25. begin
  26. Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ARGUMENT_ARRAY,
  27. nil, ErrorCode, , Buffer, SizeOf(Buffer), nil);
  28. while (Len > )and(Buffer[Len-] in [#..#, '.']) do Dec(Len);
  29. SetString(Result, Buffer, Len);
  30. end;
  31.  
  32. function GetServiceDesciption(Computer, Servicename: PWChar; var Description: WideString): Boolean;
  33. var
  34. sc: THandle;
  35. os: THandle;
  36. sd: Boolean;
  37. dwNeeded: DWORD;
  38. Buffer: Pointer;
  39. begin
  40. dwNeeded := ;
  41. Buffer := nil;
  42. sc := OpenSCManagerW(Computer, nil, SC_MANAGER_CONNECT);
  43. if sc <> then
  44. begin
  45. os := OpenServiceW(sc, Servicename, SERVICE_QUERY_CONFIG);
  46. if os <> then
  47. begin
  48. sd := QueryServiceConfig2(os, , nil, , dwNeeded);
  49. if (not sd) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
  50. begin
  51. try
  52. GetMem(Buffer, dwNeeded);
  53. result := QueryServiceConfig2(os, , Buffer, dwNeeded, dwNeeded);
  54. if result then
  55. begin
  56. Description := PSERVICE_DESCRIPTION(Buffer)^.lpDescription;
  57. end;
  58. finally
  59. FreeMem(Buffer, dwNeeded);
  60. end;
  61. end
  62. else
  63. result := False;
  64. end
  65. else
  66. result := False;
  67. end
  68. else
  69. result := False;
  70. end;
  71.  
  72. var
  73. description : WideString;
  74.  
  75. begin
  76. if not GetServiceDesciption('PC-201212071904', 'AdobeFlashPlayerUpdateSvc', description) then
  77. begin
  78. Writeln(SysErrorMessage(GetLastError));
  79. Readln;
  80. end
  81. else
  82. MessageBoxW(, PWideChar(description), 'Dienstbeschreibung', );
  83.  
  84. end.

http://www.lsworks.net/article/97.html

Delphi获取系统服务描述信息的更多相关文章

  1. .NET获取枚举DescriptionAttribute描述信息性能改进的多种方法

    一. DescriptionAttribute的普通使用方式 1.1 使用示例 DescriptionAttribute特性可以用到很多地方,比较常见的就是枚举,通过获取枚举上定义的描述信息在UI上显 ...

  2. C# 读取枚举描述信息实例

    using System;using System.Collections;using System.Collections.Generic;using System.Linq;using Syste ...

  3. 简析Geoserver中获取图层列表以及各图层描述信息的三种方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 实际项目中需要获取到Geoserver中的图层组织以及各图层 ...

  4. sql 2012中获取表的信息,包含字段的描述

    1.获取数据库中的表 select name from sysobjects where type='U' 2.获取表字段(此处是Route表) Select name from syscolumns ...

  5. dedecms 获取描述信息限制字数

    对于我刚刚刚开始对于获取到了描述的信息,但是有些字数简直是太多了,显示的样式不好看,所以我就希望限制字数,所以我来告诉你们获取描述信息限制字数的语法吧[field:description functi ...

  6. delphi XE Datasnap SERVER 在windows 7 下为服务添加描述信息

    网上对服务添加描述信息的,多数是用注册表的方式,而注册表的方式,我在win7 下测试,不知为什么,总是不行,把执行的CMD以管理员模式开启,还是没加进去. 于是在网上查到下面的代码,保存供叁考,原文博 ...

  7. Delphi使用两种不同方法获取系统端口信息--(装载)

    Delphi使用两种方法获取windows系统的端口,还可测试发送消息,点击获取端口信息后,可依次得到如下信息:DCB结构大小.波特率大小.XON的临界值.XOFF的临界值.字符位数.奇偶检验位.停止 ...

  8. delphi 文件操作(信息获取)

    delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...

  9. C++第五十篇 -- 获取串口的描述信息

    如何知道自己的电脑上有无串口呢? -- 手动 1. 查看电脑,看是否有串口器件(串口是一个九针的D型接口) 2. 在设备管理器上查看 乍一看,还以为是有两个串口,其实仔细看描述就知道,这是蓝牙虚拟串口 ...

随机推荐

  1. CentOS6.4卸载自带的OpenJDK并安装jdk1.6.21

    #进入系统的terminal,查看当前的jdk版本: shell>java -version #查看安装包 shell>rpm -qa|grep java #将上条命令查出来的结果卸载掉, ...

  2. USB系列之三:从你的U盘里读出更多的内容

    U盘是我们最常使用的一种USB设备,本文继续使用DOSUSB做驱动,试图以读取扇区的方式读取你的U盘.本文可能涉及的协议可能会比较多. 一.了解你的U盘    首先我们用上一篇文章介绍的程序usbvi ...

  3. Linux和windows动态库

    转载:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 态链接库技术实现和设计程序常用的技术,在Windows和Linux系 统中 ...

  4. HTML5学习摘录

    设计原理 不是规范里都包含什么,而是规范里为什么会包含它们,以及在设计这个规范的时候,设计者们是怎么看待这些东西的. 发展史:HTML2.0——>HTML3.2——>HTML4.0.1—— ...

  5. 2014第一周五开发问题记URL传参乱码等

    今天修改了页面中URL传中文参数乱码问题,本来远离通过在tomcat中配置URIEncoder是可以解决所有乱码问题的,但怕以后有人下载一个新的tomcat然后直接把程序放里面运行然后再发现乱码问题而 ...

  6. apache+php+mysql常见集成环境安装包

    http://www.thinksaas.cn/group/topic/33/ apache+php+mysql是常见php环境,在windows下也称为WAMP,对于初学者自选版本搭建总是会遇到一些 ...

  7. 二分求解 三角形 stl的应用 涉及范围的二分查找可以先求上界再算下界,结果即上界减下界

     二分 Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu   Description You ...

  8. ObjectOutputStream 追加写入读取错误 - 自己的实现方案

    本篇博客灵感来自http://blog.csdn.net/chenssy/article/details/13170015 问题描述.问题出现的原因.尝试解决办法,请参见鄙人上一编博客. 上一编文章解 ...

  9. 【转】android 电容屏(一):电容屏基本原理篇

    关键词:android  电容屏 tp  ITO 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsung exynos 42 ...

  10. Android开发最佳学习路线图

          为了帮助大家更好的学习Android开发的相关知识,尚观4G智能操作系统研究室(www.up4g.com)为大家制作下面学习路线图:希望能帮助到广大的android爱好者. 在開始之前我们 ...