Delphi获取系统服务描述信息
program Project1;
{$APPTYPE CONSOLE}
uses
Windows,
WinSvc;
type
SERVICE_DESCRIPTION = packed record
lpDescription: PWChar;
end;
PSERVICE_DESCRIPTION = ^SERVICE_DESCRIPTION;
function QueryServiceConfig2(hService: THandle; dwInfoLevel: DWORD; lpBuffer: Pointer; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): LongBool; stdcall; external 'advapi32.dll' name 'QueryServiceConfig2W';
////////////////////////////////////////////////////////////////////////////////
// Procedure : SysErrorMessage
// Comment : Returns last error as formated string
function SysErrorMessage(ErrorCode: Integer): string;
var
Len: Integer;
Buffer: array[..]of Char;
begin
Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_ARGUMENT_ARRAY,
nil, ErrorCode, , Buffer, SizeOf(Buffer), nil);
while (Len > )and(Buffer[Len-] in [#..#, '.']) do Dec(Len);
SetString(Result, Buffer, Len);
end;
function GetServiceDesciption(Computer, Servicename: PWChar; var Description: WideString): Boolean;
var
sc: THandle;
os: THandle;
sd: Boolean;
dwNeeded: DWORD;
Buffer: Pointer;
begin
dwNeeded := ;
Buffer := nil;
sc := OpenSCManagerW(Computer, nil, SC_MANAGER_CONNECT);
if sc <> then
begin
os := OpenServiceW(sc, Servicename, SERVICE_QUERY_CONFIG);
if os <> then
begin
sd := QueryServiceConfig2(os, , nil, , dwNeeded);
if (not sd) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
begin
try
GetMem(Buffer, dwNeeded);
result := QueryServiceConfig2(os, , Buffer, dwNeeded, dwNeeded);
if result then
begin
Description := PSERVICE_DESCRIPTION(Buffer)^.lpDescription;
end;
finally
FreeMem(Buffer, dwNeeded);
end;
end
else
result := False;
end
else
result := False;
end
else
result := False;
end;
var
description : WideString;
begin
if not GetServiceDesciption('PC-201212071904', 'AdobeFlashPlayerUpdateSvc', description) then
begin
Writeln(SysErrorMessage(GetLastError));
Readln;
end
else
MessageBoxW(, PWideChar(description), 'Dienstbeschreibung', );
end.
http://www.lsworks.net/article/97.html
Delphi获取系统服务描述信息的更多相关文章
- .NET获取枚举DescriptionAttribute描述信息性能改进的多种方法
一. DescriptionAttribute的普通使用方式 1.1 使用示例 DescriptionAttribute特性可以用到很多地方,比较常见的就是枚举,通过获取枚举上定义的描述信息在UI上显 ...
- C# 读取枚举描述信息实例
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using Syste ...
- 简析Geoserver中获取图层列表以及各图层描述信息的三种方法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 实际项目中需要获取到Geoserver中的图层组织以及各图层 ...
- sql 2012中获取表的信息,包含字段的描述
1.获取数据库中的表 select name from sysobjects where type='U' 2.获取表字段(此处是Route表) Select name from syscolumns ...
- dedecms 获取描述信息限制字数
对于我刚刚刚开始对于获取到了描述的信息,但是有些字数简直是太多了,显示的样式不好看,所以我就希望限制字数,所以我来告诉你们获取描述信息限制字数的语法吧[field:description functi ...
- delphi XE Datasnap SERVER 在windows 7 下为服务添加描述信息
网上对服务添加描述信息的,多数是用注册表的方式,而注册表的方式,我在win7 下测试,不知为什么,总是不行,把执行的CMD以管理员模式开启,还是没加进去. 于是在网上查到下面的代码,保存供叁考,原文博 ...
- Delphi使用两种不同方法获取系统端口信息--(装载)
Delphi使用两种方法获取windows系统的端口,还可测试发送消息,点击获取端口信息后,可依次得到如下信息:DCB结构大小.波特率大小.XON的临界值.XOFF的临界值.字符位数.奇偶检验位.停止 ...
- delphi 文件操作(信息获取)
delphi获取Exe文件版本信息的函数 Type TFileVersionInfo = Record FixedInfo:TVSFixedFileInfo; {版本信息} CompanyName:S ...
- C++第五十篇 -- 获取串口的描述信息
如何知道自己的电脑上有无串口呢? -- 手动 1. 查看电脑,看是否有串口器件(串口是一个九针的D型接口) 2. 在设备管理器上查看 乍一看,还以为是有两个串口,其实仔细看描述就知道,这是蓝牙虚拟串口 ...
随机推荐
- window7下statsvn统计代码量
下载statsvn:http://www.statsvn.org/ 将下载后的statsvn.jar放到d:\svn目录下; 打开cmd窗口切换到需要统计代码的项目目录如:d:\project\web ...
- ajax请求解析springmvc返回的json数据
需要使用的框架 spring3.0 jquery1.9.0(简化ajax开发的js库) Jackson(json处理器):jackson-core-asl-1.9.2.jar,jackson-mapp ...
- hdu Buy the Ticket
import java.math.BigInteger; import java.util.*; public class Main { public static void main(String ...
- javascript之Date
JSON 日期转 JS日期,我们知道,日期类型转成JSON之后,返回的数据类似这样: /Date(1379944571737)/ 但是这种日期并不能直接显示,因为根本没有人知道这是什么意思,下面提供一 ...
- scheme递归
主要参考: http://www.shido.info/lisp/scheme7_e.html Function fact that calculates factorials. (define (f ...
- 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...
- PKU 3667 Hotel(线段树)
Hotel The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a ...
- 剑指offter-面试题7.用两个栈实现队列
题目.用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead 分别完成在对尾插入节点和在队头删除节点. 该队列类模板如下: template <typ ...
- U盘启动盘的制作与U盘重装系统
网上有各种各样的装系统的方法,也有各种不同的操作系统版本. 本文介绍如何有UtraISO将U盘制作成系统启动盘,本文用于制作的系统是纯净的32位win7旗舰版. 可到http://itellyou.c ...
- Installing — pylibmc 1.2.3 documentation
Installing - pylibmc 1.2.3 documentation libmemcached