网事如风

    网如风,事如风,爱如风,情如风,,,
都随风起,随风去

统计

Microsoft Source

My Friends

My Links

Program

最新评论

2014年1月24日 #

咦,居然还能使用!!!

咦,居然还能使用!!!

posted @ 2014-01-24 08:49 网事如风 阅读(74) | 评论 (0)编辑 收藏

2013年2月1日 #

转:Delphi 服务程序注册与卸载

 

Delphi 服务程序注册与卸载

分类: DELPHI VS PASCAL2012-07-16 16:57 148人阅读 评论(0) 收藏 举报
uses winsvc;
function InstallService(ServiceName, DisplayName, FileName: string): boolean;
var
SCManager,Service: THandle;
Args: pchar;
begin
Result := False;
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager = 0 then Exit;
try
  Service := CreateService(SCManager, //句柄
                  PChar(ServiceName), //服务名称
                  PChar(DisplayName), //显示服务名
                  SERVICE_ALL_ACCESS, //服务访问类型
                  SERVICE_WIN32_OWN_PROCESS, //服务类型 or SERVICE_INTERACTIVE_PROCESS
                  SERVICE_AUTO_START, //自动启动服务
                  SERVICE_ERROR_IGNORE, //忽略错误
                  PChar(FileName), //启动的文件名
                  nil, //name of load ordering group (载入组名) 'LocalSystem'
                  nil, //标签标识符
                  nil, //相关性数组名
                  nil, //帐户(当前)
                  nil); //密码(当前)

  Args := nil;
  StartService(Service, 0, Args);
  CloseServiceHandle(Service);
finally
  CloseServiceHandle(SCManager);
end;
Result := True;
end;

procedure UninstallService(ServiceName: string);
var
SCManager,Service: THandle;
ServiceStatus: SERVICE_STATUS;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager = 0 then Exit;
try
  Service := OpenService(SCManager, PChar(ServiceName), SERVICE_ALL_ACCESS);
  ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus);
  DeleteService(Service);
  CloseServiceHandle(Service);
finally
  CloseServiceHandle(SCManager);
end;
end;

procedure ServiceCtrlHandler(Control: dword); stdcall;
begin
case Control of
  SERVICE_CONTROL_STOP:
  begin
    Stopped := True;
    Status.dwCurrentState := SERVICE_STOPPED;
  end;
  SERVICE_CONTROL_PAUSE:
  begin
    Paused := True;
    Status.dwcurrentstate := SERVICE_PAUSED;
  end;
  SERVICE_CONTROL_CONTINUE:
  begin
    Paused := False;
    Status.dwCurrentState := SERVICE_RUNNING;
  end;
  SERVICE_CONTROL_INTERROGATE: ;
  SERVICE_CONTROL_SHUTDOWN: Stopped := True;
end;
SetServiceStatus(StatusHandle, Status);
end;

取得當前系統已安裝的NtService

相關Api:  EnumServicesStatus

The EnumServicesStatus function enumerates services in the specified service control manager database. The name and status of each service are provided.

This function has been superseded by the EnumServicesStatusEx function. It returns the same information EnumServicesStatus returns, plus the process identifier and additional information for the service. In addition, EnumServicesStatusEx enables you to enumerate services that belong to a specified group.


BOOL EnumServicesStatus(
  SC_HANDLE hSCManager,
  DWORD dwServiceType,
  DWORD dwServiceState,
  LPENUM_SERVICE_STATUS lpServices,
  DWORD cbBufSize,
  LPDWORD pcbBytesNeeded,
  LPDWORD lpServicesReturned,
  LPDWORD lpResumeHandle
);

sample:

uses Windows,WinSvc;

function ServiceGetList(sMachine: string; dwServiceType,
  dwServiceState: DWord; slServicesList: TStrings): boolean;
var
  j: integer;
  schm: SC_Handle;
  nBytesNeeded, nServices, nResumeHandle: DWord;
  ServiceStatusRecs: array[0..511] of TEnumServiceStatus;
begin
  Result := false;
  schm := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_ALL_ACCESS);
  try
    if (schm = 0) then Exit;
    nResumeHandle := 0;
    while True do
    begin
      EnumServicesStatus(schm, dwServiceType, dwServiceState, @ServiceStatusRecs[0], sizeof(ServiceStatusRecs),
        @nBytesNeeded, @nServices, @nResumeHandle);
      for j := 0 to nServices - 1 do
      begin
        slServicesList.Add(ServiceStatusRecs[j].lpDisplayName + '---' + ServiceStatusRecs[j].lpServiceName);
      end;
      if nBytesNeeded = 0 then Break;
    end;
    Result := true;
  finally
    if schm > 0 then
      CloseServiceHandle(schm);
  end;
end;

procedure TForm1.btnServiceGetListClick(Sender: TObject);
begin
  ServiceGetList('', SERVICE_WIN32, SERVICE_STATE_ALL, lbServices.Items);
end;

posted @ 2013-02-01 15:43 网事如风 阅读(205) | 评论 (0)编辑 收藏

2011年10月1日 #

加班的国庆,国庆的加班

@import url(http://www.cnitblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

posted @ 2011-10-01 07:49 网事如风 阅读(62) | 评论 (0)编辑 收藏

2011年7月7日 #

eeerre

eeerre@import url(http://www.cnitblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

posted @ 2011-07-07 16:33 网事如风 阅读(91) | 评论 (0)编辑 收藏

2011年4月1日 #

(转)Sina微博应用开发指南

     摘要: API平台应用日益丰富,为了让开发者更容易了解开发流程;为了规范API的接口,需要制定开发规范;为了对开发者进行一些深层次的指导,让开发者怎样来最优的访问API接口,特此制定开发流程技术规范与指南。  阅读全文

posted @ 2011-04-01 09:05 网事如风 阅读(4912) | 评论 (0)编辑 收藏

2011年3月4日 #

准备开始Iphone软件开发,有熟练的可以共同研究一下,,,

     摘要:   阅读全文

posted @ 2011-03-04 17:11 网事如风 阅读(376) | 评论 (0)编辑 收藏

准备开始Iphone软件开发,有熟练的可以共同研究一下,,,

     摘要:   阅读全文

posted @ 2011-03-04 17:11 网事如风 阅读(306) | 评论 (0)编辑 收藏

2011年2月18日 #

出了趟国回来了,博客居然还在,很是高兴,,,

出了趟国回来了,博客居然还在,很是高兴,,,

posted @ 2011-02-18 11:33 网事如风 阅读(79) | 评论 (0)编辑 收藏

2010年8月3日 #

小城一江烟雨,两人十指勾画......

等后句。

posted @ 2010-08-03 07:20 网事如风 阅读(146) | 评论 (0)编辑 收藏

2010年5月21日 #

转:女孩叫你一声‘老公’意味着什么..你是否知道!!

     摘要: 女孩叫你一声‘老公’意味着什么..你是否知道!!   阅读全文

posted @ 2010-05-21 16:50 网事如风 阅读(154) | 评论 (0)编辑 收藏

仅列出标题  下一页