请问:如何才检查出来系统中是否存在某一个服务程序呢?(100分)

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
我想知道如何在程序里判断系统中是否存在某一个服务程序呢?
 
列出所有服务程序的代码,自己从列表中找一下。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, WinSvc;

type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
HANDLE: SC_HANDLE;
buf: array [0..500] of TEnumServiceStatusA;
BytesNeeded, ServicesReturned, ResumeHandle: DWORD;
I: Integer;
begin
HANDLE := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE);
ResumeHandle := 0;
EnumServicesStatus(HANDLE, SERVICE_WIN32, SERVICE_ACTIVE or SERVICE_INACTIVE,
buf[0], sizeOf(Buf), BytesNeeded, ServicesReturned, ResumeHandle);
ListBox1.Items.Clear;
for I := 0 to ServicesReturned - 1 do
begin
listbox1.Items.add(StrPas(buf.lpDisplayName));
end;
CloseServiceHandle(HANDLE);
end;

end.
 
上面的代码没问题
 
楼上,我也知道没有问题,但我是让程序自己判断有没有某个服务呀,
 
判断服务名不行吗?
 
嗯,最好能还读取到某种服务的特征,如某一个接口这样的
 
光名字就够了吧,有oracle就是oracle,有sqlserver就是sqlserver,有interbase就是interbase
 
to everybody
谢谢啦!
 
后退
顶部