c语言4029是什么错误,都来看看这个异常在哪里呢? 这个是小弟我找的代码 看了看觉得没错....

当前位置:我的异常网» C语言 » 都来看看这个异常在哪里呢? 这个是小弟我找的代码

都来看看这个异常在哪里呢? 这个是小弟我找的代码 看了看觉得没错.

www.myexceptions.net  网友分享于:2013-03-20  浏览:44次

都来看看这个错误在哪里呢?? 这个是我找的代码 看了看觉得没错...

//这个是一个服务程序的代码,我用的编译器是VC++6.0

#include "stdio.h"

#include "windows.h"

/*typedef int BOOL;

#ifndef TURE

#define TURE 1

#endif

#ifndef FALSE

#define FALSE 0

#endif*/

SERVICE_STATUSm_servicestatus;

SERVICE_STATUS_HANDLE m_servicestatushandle;

BOOL brunning = TRUE;

void WINAPI ServiceMain(DWORD argc,LPTSTR *argv);//服务主函数

void WINAPI ServiceCtrlHandler(DWORD opcode);//服务控制函数

void WINAPI CmdStart(void);//要启动的程序函数

BOOL InstallService();//安装服务的函数

BOOL DeletService();//卸载服务

int main(int argc,char *argv[])

{

printf("\twindows 基本服务演示!\n");

if(argc != 3){

printf("参数错误!\n");

return 0;

}

if(strcmp(argv[1],"-install") == 0){

if(InstallService()){

printf("\n\n服务安装成功!\n");

}

else{

printf("\n\n安装服务的过程中出现错误!\n");

return 0;

}

}

else if(strcmp(argv[1],"-remove") == 0){

if(DeletService()){

printf("\n\n服务卸载成功!\n");

}

else{

printf("\n\n服务卸载出错!\n");

return 0;

}

}

else{

printf("\n%s服务的安装或者卸载出错!\n");

return 0;

}

SERVICE_TABLE_ENTRY dispatchtable[] = {{"WindowsNT自启动",ServiceMain},{NULL,NULL}};

StartServiceCtrlDispatcher(dispatchtable);//注册服务主函数

return 0;

}

//服务主函数

void WINAPI ServiceMain(DWORD argc,LPTSTR *argc)

{

//注册服务

m_servicestatus.dwServiceType = SERVICE_WIN32;

m_servicestatus.dwCurrentState = SERVICE_START_PENDING;//服务开始之前

m_servicestatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;

m_servicestatus.dwWin32ExitCode = 0;

m_servicestatus.dwServiceSpecificExitCode = 0;

m_servicestatus.dwCheckPoint = 0;

m_servicestatus.dwWaitHint = 0;

m_servicestatushandle = RegisterServiceCtrlHandler("WindowsNT自启动",ServiceCtrlHandler);//注册服务控制函数

if(m_servicestatushandle == (SERVICE_STATUS_HANDLE)0){

return ;

}

m_servicestatus.dwCurrentState = SERVICE_RUNNING;

m_servicestatus.dwCheckPoint = 0;

m_servicestatus.dwWaitHint = 0;

SetServiceStatus(m_servicestatushandle,&m_servicestatus);

brunning = TRUE;

//启动服务

CmdStart();

return ;

}

//服务控制函数

void WINAPI ServiceCtrlHandler(DWORD opcode)

{

switch(opcode){

case SERVICE_CONTROL_PAUSE:

m_servicestatus.dwCurrentState = SERVICE_PAUSED;

break;

case SERVICE_CONTROL_CONTINUE:

m_servicestatus.dwCurrentState = SERVICE_RUNNING;

break;

case SERVICE_CONTROL_STOP:

m_servicestatus.dwWin32ExitCode = 0;

m_servicestatus.dwCurrentState = SERVICE_STOPPED;

m_servicestatus.dwCheckPoint = 0;

m_servicestatus.dwWaitHint = 0;

SetServiceStatus(m_servicestatushandle,&m_servicestatus);

brunning = FALSE;

break;

case SERVICE_CONTROL_INTERROGATE:

break;

}

return ;

}

//安装服务

BOOL InstallService()

{

char strdir[1024];

SC_HANDLE scmanager,scservice;

GetCurrentDirectory(1024,strdir);

GetModuleFileName(NULL,strdir,sizeof(strdir));

char chsyspath[1024];

GetSystemDirectory(chsyspath,sizeof(chsyspath));

strcat(chsyspath,"\\windowsNT自启动.exe");

if(CopyFile(strdir,chsyspath,FALSE)){

printf("复制成功!\n");

}

strcpy(strdir,chsyspath);

scmanager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

if(scmanager == NULL){

printf("打开控制管理器失败!\n");

return FALSE;

}

LPCTSTR lpszpath = strdir;

scservice = CreateService(scmanager,"windowsNT自启动","Windows Manger Control",

SERVICE_ALL_ACCESS,

SERVICE_WIN32_OWN_PROCESS,

SERVICE_AUTO_START,

SERVICE_ERROR_NORMAL,

lpszpath,

NULL,NULL,NULL,NULL,NULL);

if(scservice == NULL){

printf("添加服务失败!\n");

return FALSE;

}

CloseServiceHandle(scservice);

return TRUE;

}

//卸载服务

BOOL DeletService()

{

SC_HANDLE scmanger;

SC_HANDLE hservice;

scmanger = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

char syspath[1024];

GetSystemDirectory(syspath,sizeof(syspath));

strcat(syspath,"\\windowsNT自启动.exe");

if(scmanger == NULL){

printf("打开服务管理器失败!\n");

return FALSE;

}

hservice = OpenService(scmanger,"WindowsNT自启动",SERVICE_ALL_ACCESS);

if(hservice == NULL){

printf("打开服务失败!\n");

return FALSE;

}

if(DeleteFile(syspath) == 0){

printf("删除文件失败!\n");

return FALSE;

}

else{

printf("删除文件成功!\n");

}

if(DeletService(hservice) == 0){

return FALSE;

}

if(CloseServiceHandle(hservice) == 0){

return FALSE;

}

else{

return TRUE;

}

}

//要启动的程序代码

void WINAPI CmdStart(void)

{

}

//错误信息

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(54) : error C2275: 'SERVICE_TABLE_ENTRY' : illegal use of this type as an expression

e:\学习软件\vc++6.0\vc++.6.0.with.sp6\vc6cn\vc98\include\winsvc.h(384) : see declaration of 'SERVICE_TABLE_ENTRY'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(54) : error C2146: syntax error : missing ';' before identifier 'dispatchtable'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(54) : error C2065: 'dispatchtable' : undeclared identifier

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(54) : error C2059: syntax error : ']'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(55) : warning C4047: 'function' : 'const struct _SERVICE_TABLE_ENTRYA *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(55) : warning C4024: 'StartServiceCtrlDispatcherA' : different types for formal and actual parameter 1

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(60) : error C2040: 'argc' : 'char ** ' differs in levels of indirection from 'unsigned long '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(61) : warning C4029: declared formal parameter list different from definition

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(124) : error C2143: syntax error : missing ';' before 'type'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(125) : error C2065: 'chsyspath' : undeclared identifier

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(125) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(125) : warning C4024: 'GetSystemDirectoryA' : different types for formal and actual parameter 1

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(126) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(126) : warning C4024: 'strcat' : different types for formal and actual parameter 1

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(128) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(128) : warning C4024: 'CopyFileA' : different types for formal and actual parameter 2

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(132) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(132) : warning C4024: 'strcpy' : different types for formal and actual parameter 2

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(141) : error C2275: 'LPCTSTR' : illegal use of this type as an expression

e:\学习软件\vc++6.0\vc++.6.0.with.sp6\vc6cn\vc98\include\winnt.h(196) : see declaration of 'LPCTSTR'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(141) : error C2146: syntax error : missing ';' before identifier 'lpszpath'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(141) : error C2065: 'lpszpath' : undeclared identifier

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(141) : warning C4047: '=' : 'int ' differs in levels of indirection from 'char *'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(148) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(148) : warning C4024: 'CreateServiceA' : different types for formal and actual parameter 8

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(168) : error C2143: syntax error : missing ';' before 'type'

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(169) : error C2065: 'syspath' : undeclared identifier

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(169) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(169) : warning C4024: 'GetSystemDirectoryA' : different types for formal and actual parameter 1

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(170) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(170) : warning C4024: 'strcat' : different types for formal and actual parameter 1

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(184) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '

E:\学习软件\C语言程序\windowsNT自启动服务\windowsNT自启动.c(184) : warning C4024: 'DeleteFileA' : different types for formal and actual parameter 1

执行 cl.exe 时出错.

windowsNT自启动.obj - 1 error(s), 0 warning(s)

------解决方案--------------------

C/C++ code//服务主函数

void WINAPI ServiceMain(DWORD argc,LPTSTR *argv)//这儿参数改为(DWORD argc,LPTSTR *argv)

{

//注册服务

------解决方案--------------------C/C++ code//卸载服务

BOOL DeletService() [color=#FF0000]//该函数在这里定义实现时没有传参数,你调用时怎么可以给他传参数呢[/color]

{

SC_HANDLE scmanger;

SC_HANDLE hservice;

scmanger = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);

文章评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值