#include<iostream>
#include<Windows.h>
#include<winsvc.h>
#pragma comment(lib,"Advapi32.lib")
using namespace std;
int main()
{
SC_HANDLE hmachine=NULL;
hmachine=OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT|SC_MANAGER_ALL_ACCESS );
if(hmachine)
cout<<"open sestem manger succeed"<<endl;
/***********************/
BYTE *heng;
DWORD len=0,re=0,ss=0,err=0;
if(0==EnumServicesStatusEx(hmachine,SC_ENUM_PROCESS_INFO ,SERVICE_WIN32|SERVICE_DRIVER ,SERVICE_STATE_ALL
,NULL,0,&len,&re,&ss,NULL))
{
err=GetLastError();
int x=err;
cout<<x<<endl;
x=len;
cout<<"requir"<<x<<endl;
heng=new BYTE[len];
// cout<<"enum failed"<<endl;
}
if(EnumServicesStatusEx(hmachine,SC_ENUM_PROCESS_INFO ,SERVICE_WIN32|SERVICE_DRIVER ,SERVICE_STATE_ALL
,heng,len,&len,&re,&ss,NULL))
{
wcout<<re<<endl;
LPENUM_SERVICE_STATUS_PROCESS x=(LPENUM_SERVICE_STATUS_PROCESS)heng;
for(int c=0;c<re;c++)
{
//wcout<<heng[0].lpServiceName<<endl;
wcout<<x[c].lpServiceName<<endl;
/*wcout<<x[c].lpDisplayName<<endl;
wcout<<x[c].ServiceStatusProcess.dwProcessId<<endl;
wcout<<x[c].ServiceStatusProcess.dwCurrentState<<endl;
wcout<<x[c].ServiceStatusProcess.dwCheckPoint<<endl;*/
if(c==re-1)
cout<<re<<endl;
}
cout<<re<<endl;
//system("net start | find /c /i \"wireless\" >out.txt");
}}
經驗慢慢積累中