-
-
[原创][原创][原创]Windows服务编程以及碰到的问题
-
发表于: 2014-12-2 18:16 4346
-
Windows服务编程以及碰到的问题
lilicao2000@tom.com
我上次写了个远程桌面代理程序但用了没几天就发现那程序如果在代理电脑上的用户注销了的话就被关闭了,所以我决定把那个代理程序改成服务运行然后这个问题就解决了,代码如下:
#include<windows.h>
#include<winsvc.h>
#include"proxymstsc.h"
SERVICE_STATUS service_status;
SERVICE_STATUS_HANDLE service_status_handle;
void WINAPI service_ctrl(DWORD opcode);
void WINAPI service_start(DWORD argc,LPTSTR *argv);
DWORD WINAPI mstsc_service(LPVOID lpparam);
void WINAPI service_start(DWORD argc,LPTSTR *argv){
DWORD status;
DWORD error;
HANDLE hthread;
service_status.dwServiceType=SERVICE_WIN32;//|SERVICE_INTERACTIVE_PROCESS;
service_status.dwCurrentState=SERVICE_START_PENDING;
service_status.dwControlsAccepted=SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
service_status.dwWin32ExitCode=0;
service_status.dwServiceSpecificExitCode=0;
service_status.dwCheckPoint=0;
service_status.dwWaitHint=0;
service_status_handle=RegisterServiceCtrlHandler("mstscsc",service_ctrl);
service_status.dwCurrentState=SERVICE_RUNNING;
service_status.dwCheckPoint=0;
service_status.dwWaitHint=0;
SetServiceStatus(service_status_handle,&service_status);
hthread=CreateThread(NULL,0,mstsc_service,NULL,0,NULL);
return;
}
DWORD WINAPI mstsc_service(LPVOID lpparam){
start_proxy();
return 0;
}
void WINAPI service_ctrl(DWORD opcode){
DWORD status;
switch(opcode){
case SERVICE_CONTROL_PAUSE:
service_status.dwCurrentState=SERVICE_PAUSED;
break;
case SERVICE_CONTROL_CONTINUE:
service_status.dwCurrentState=SERVICE_RUNNING;
break;
case SERVICE_CONTROL_STOP:
service_status.dwWin32ExitCode=0;
service_status.dwCurrentState=SERVICE_STOPPED;
service_status.dwCheckPoint=0;
service_status.dwWaitHint=0;
SetServiceStatus(service_status_handle,&service_status);
return;
case SERVICE_CONTROL_INTERROGATE:
break;
default:
break;
}
SetServiceStatus(service_status_handle,&service_status);
return;
}
int main(int argc,char *argv[]){
SERVICE_TABLE_ENTRY dispatch_table[]=
{
{"mstscsc",(LPSERVICE_MAIN_FUNCTION)service_start},
{NULL,NULL},
};
StartServiceCtrlDispatcher(dispatch_table);
}
这里我碰到了两个问题,一个是在安装服务的时候出现1053错误,
这个问题困扰了我好几天,主要是这种服务程序太难调试了,然后我把下面这个地方改成了用线程启动,这个问题就搞定了,如图:
还有一个问题就是在win server 2003 的电脑上运行的时候出现5号错误:
从字面上看因该是权限的问题,然后把下面一段代码注释掉就行了:
最后再问问坛子里面的好心人怎么样才能不让网管发现本机通信流量,因为像我写得那个远程桌面代理如果被发现了的话,网管会登上那台电脑然后把那服务关了,然后就没然后了。
最后啰嗦一句就是这个服务你得用sc命令安装。
lilicao2000@tom.com
我上次写了个远程桌面代理程序但用了没几天就发现那程序如果在代理电脑上的用户注销了的话就被关闭了,所以我决定把那个代理程序改成服务运行然后这个问题就解决了,代码如下:
#include<windows.h>
#include<winsvc.h>
#include"proxymstsc.h"
SERVICE_STATUS service_status;
SERVICE_STATUS_HANDLE service_status_handle;
void WINAPI service_ctrl(DWORD opcode);
void WINAPI service_start(DWORD argc,LPTSTR *argv);
DWORD WINAPI mstsc_service(LPVOID lpparam);
void WINAPI service_start(DWORD argc,LPTSTR *argv){
DWORD status;
DWORD error;
HANDLE hthread;
service_status.dwServiceType=SERVICE_WIN32;//|SERVICE_INTERACTIVE_PROCESS;
service_status.dwCurrentState=SERVICE_START_PENDING;
service_status.dwControlsAccepted=SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE;
service_status.dwWin32ExitCode=0;
service_status.dwServiceSpecificExitCode=0;
service_status.dwCheckPoint=0;
service_status.dwWaitHint=0;
service_status_handle=RegisterServiceCtrlHandler("mstscsc",service_ctrl);
service_status.dwCurrentState=SERVICE_RUNNING;
service_status.dwCheckPoint=0;
service_status.dwWaitHint=0;
SetServiceStatus(service_status_handle,&service_status);
hthread=CreateThread(NULL,0,mstsc_service,NULL,0,NULL);
return;
}
DWORD WINAPI mstsc_service(LPVOID lpparam){
start_proxy();
return 0;
}
void WINAPI service_ctrl(DWORD opcode){
DWORD status;
switch(opcode){
case SERVICE_CONTROL_PAUSE:
service_status.dwCurrentState=SERVICE_PAUSED;
break;
case SERVICE_CONTROL_CONTINUE:
service_status.dwCurrentState=SERVICE_RUNNING;
break;
case SERVICE_CONTROL_STOP:
service_status.dwWin32ExitCode=0;
service_status.dwCurrentState=SERVICE_STOPPED;
service_status.dwCheckPoint=0;
service_status.dwWaitHint=0;
SetServiceStatus(service_status_handle,&service_status);
return;
case SERVICE_CONTROL_INTERROGATE:
break;
default:
break;
}
SetServiceStatus(service_status_handle,&service_status);
return;
}
int main(int argc,char *argv[]){
SERVICE_TABLE_ENTRY dispatch_table[]=
{
{"mstscsc",(LPSERVICE_MAIN_FUNCTION)service_start},
{NULL,NULL},
};
StartServiceCtrlDispatcher(dispatch_table);
}
这里我碰到了两个问题,一个是在安装服务的时候出现1053错误,
这个问题困扰了我好几天,主要是这种服务程序太难调试了,然后我把下面这个地方改成了用线程启动,这个问题就搞定了,如图:
还有一个问题就是在win server 2003 的电脑上运行的时候出现5号错误:
从字面上看因该是权限的问题,然后把下面一段代码注释掉就行了:
最后再问问坛子里面的好心人怎么样才能不让网管发现本机通信流量,因为像我写得那个远程桌面代理如果被发现了的话,网管会登上那台电脑然后把那服务关了,然后就没然后了。
最后啰嗦一句就是这个服务你得用sc命令安装。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法
赞赏
他的文章
- [原创][原创][原创]Windows服务编程以及碰到的问题 4347
- [原创]远程桌面代理 7540
- [原创]Accelerated+C+++中文版Split 的2个小问题 5842
- [原创]用C实现多态 10120
谁下载
sharenpk
ylp1332
zxc
option
huangyalei
cdanlover
Sam.com
b23526
wr960204
Second
惊电
ttstation
heihu
RuShi
testttt
benteng
fibx
luohb
YamingW
Winker
峰回路转
一民
cvcvxk
坚持到底
红色神话
yhan
fengyunsl
zzage
flfq
likecrack
whungfpe
wang王
Anplando
CHYX
achillis
Diabloking
tonybo
sefs
wixi
flyingx
jordonA
lynnux
flponline
skypismire
vipsehll
bboyiori
xcrypt
piaoftp
shilyx
HelloCrack
小菜鸟一
ezhimeng
elianmeng
shuyangzjg
linziqingl
yangya
killerfive
longloo
jayh
网络风尘
转身
猎人猎枪
liujliujie
miaoling
yy大雄
fqbqrr
zaowuzhu
学雄
hendugu
woaixj
coffeemlx
熊趴趴来
Hoogle
lhwqqq
evilkis
ollyicedg
TPDD
gaod
gaollxu
zjjhszs
一身惆怅
sysercn
zhych
z许
zhouws
scusword
ukisslian
zjgsrh
pythoner
hkzjms
fishgs
sealmoon
江月风月
mijianjun
小黑脸
SinCoder
kanjunjie
Kisesy
fragileeye
谁下载
sharenpk
ylp1332
zxc
option
huangyalei
cdanlover
Sam.com
b23526
wr960204
Second
惊电
ttstation
heihu
RuShi
testttt
benteng
fibx
luohb
YamingW
Winker
峰回路转
一民
cvcvxk
坚持到底
红色神话
yhan
fengyunsl
zzage
flfq
likecrack
whungfpe
wang王
Anplando
CHYX
achillis
Diabloking
tonybo
sefs
wixi
flyingx
jordonA
lynnux
flponline
skypismire
vipsehll
bboyiori
xcrypt
piaoftp
shilyx
HelloCrack
小菜鸟一
ezhimeng
elianmeng
shuyangzjg
linziqingl
yangya
killerfive
longloo
jayh
网络风尘
转身
猎人猎枪
liujliujie
miaoling
yy大雄
fqbqrr
zaowuzhu
学雄
hendugu
woaixj
coffeemlx
熊趴趴来
Hoogle
lhwqqq
evilkis
ollyicedg
TPDD
gaod
gaollxu
zjjhszs
一身惆怅
sysercn
zhych
z许
zhouws
scusword
ukisslian
zjgsrh
pythoner
hkzjms
fishgs
sealmoon
江月风月
mijianjun
小黑脸
SinCoder
kanjunjie
Kisesy
fragileeye
谁下载
sharenpk
ylp1332
zxc
option
huangyalei
cdanlover
Sam.com
b23526
wr960204
Second
惊电
ttstation
heihu
RuShi
testttt
benteng
fibx
luohb
YamingW
Winker
峰回路转
一民
cvcvxk
坚持到底
红色神话
yhan
fengyunsl
zzage
flfq
likecrack
whungfpe
wang王
Anplando
CHYX
achillis
Diabloking
tonybo
sefs
wixi
flyingx
jordonA
lynnux
flponline
skypismire
vipsehll
bboyiori
xcrypt
piaoftp
shilyx
HelloCrack
小菜鸟一
ezhimeng
elianmeng
shuyangzjg
linziqingl
yangya
killerfive
longloo
jayh
网络风尘
转身
猎人猎枪
liujliujie
miaoling
yy大雄
fqbqrr
zaowuzhu
学雄
hendugu
woaixj
coffeemlx
熊趴趴来
Hoogle
lhwqqq
evilkis
ollyicedg
TPDD
gaod
gaollxu
zjjhszs
一身惆怅
sysercn
zhych
z许
zhouws
scusword
ukisslian
zjgsrh
pythoner
hkzjms
fishgs
sealmoon
江月风月
mijianjun
小黑脸
SinCoder
kanjunjie
Kisesy
fragileeye
看原图
赞赏
雪币:
留言: