服务管理器 小结

写了两天 终于把这个服务管理工具给写好了,这也算是我的一个VC程序了。

现在发现其实一般的用VC没什么难的,只不过这个适应的过程有点长,比用.NET长好多啊,之前已经包装过一个视频卡的程序了。

呵呵,看来是适应了,不过要深入,还是有一段很长的路的要走,比如要适应多线程,还有能够很流畅的写网络程序,这些东西,都还只是一点皮毛而已,而且我对Windows的理解也是不够的,慢慢来吧。

 

刚刚 看了全运会的110栏,刘翔冠军,这个冠军的背后的汗水和痛苦也只有他自己知道,我们看到只有鲜花和掌声。

 

 

总结一下,这个程序。

这个程序主要是疯狂的使用几个API,

1,在任何对服务的操作之前都要首先 打开服务管理器 OpenSCManager

SC_HANDLE OpenSCManager(LPCTSTR lpMachineName,LPCTSTR lpDatabaseName,DWORD dwDesiredAccess );

 

The OpenSCManager function establishes a connection to the service control manager on the specified computer and opens the specified service control manager database.

 

2,然后打开某个服务在对其进行操作 OpenService

SC_HANDLE OpenService(SC_HANDLE hSCManager,LPCTSTR lpServiceName,DWORD dwDesiredAccess);

The OpenService function opens an existing service.

 

3,关闭服务

CloseServiceHandle

 

4,获取服务信息

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

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.

 

5,查询指定的服务的信息

BOOL QueryServiceConfig(
  SC_HANDLE hService,
  LPQUERY_SERVICE_CONFIG lpServiceConfig,
  DWORD cbBufSize,
  LPDWORD pcbBytesNeeded
);

The QueryServiceConfig function retrieves the configuration parameters of the specified service. Optional configuration parameters are available using the QueryServiceConfig2 function.

服务的附加信息由QueryServiceConfig2 获取,比如服务的描述信息

 

6,开启服务

BOOL StartService(
  SC_HANDLE hService,
  DWORD dwNumServiceArgs,
  LPCTSTR* lpServiceArgVectors
);

7,控制服务

这个可以控制服务的当前状态,启动方式等一些信息

BOOL StartService(
  SC_HANDLE hService,
  DWORD dwNumServiceArgs,
  LPCTSTR* lpServiceArgVectors
);

大概就是这个样子了。

剩下的就是一下MFC的东西了

相关文章
相关标签/搜索