|
|
| 创建SvcHost.exe 调用的服务原理与实践(8) |
| 作者:郁郁小蝎 来源:中国站长学院 发布时间:2006-5-19 14:21:52 发布人:chinazhan |
减小字体
增大字体
/* used to install by rundll32.exe Platform SDK: Tools - Rundll32 The Run DLL utility (Rundll32.exe) included in Windows enables you to call functions exported from a 32-bit DLL. These functions must have the following syntax: */ void CALLBACK RundllInstallA( HWND hwnd,// handle to owner window HINSTANCE hinst,// instance handle for the DLL char *param,// string the DLL will parse int nCmdShow// show state ) { InstallService(param); }
int UninstallService(char *name) { int rc = 0; SC_HANDLE schService; SC_HANDLE hscm;
__try{ hscm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (hscm == NULL) { OutputString("OpenSCManager() error %d", rc = GetLastError() ); return rc; }
char *svcname = DEFAULT_SERVICE; if(name && name[0]) svcname = name;
schService = OpenService(hscm, svcname, DELETE); if (schService == NULL) { OutputString("OpenService(%s) error %d", svcname, rc = GetLastError() ); return rc; }
if (!DeleteService(schService) ) { OutputString("OpenService(%s) error %d", svcname, rc = GetLastError() ); return rc; }
OutputString("DeleteService(%s) SUCCESS.", svcname); }__except(1) { OutputString("Exception Catched 0x%X", GetExceptionCode()); }
CloseServiceHandle(schService); CloseServiceHandle(hscm); return rc; }
/* used to uninstall by rundll32.exe Platform SDK: Tools - Rundll32 The Run DLL utility (Rundll32.exe) included in Windows enables you to call functions exported from a 32-bit DLL. These functions must have the following syntax: */ void CALLBACK RundllUninstallA( HWND hwnd,// handle to owner window HINSTANCE hinst,// instance handle for the DLL char *param,// string the DLL will parse int nCmdShow// show state ) { UninstallService(param); }
//output the debug infor into log file & DbgPrint void OutputString( char *lpFmt, ... ) { char buff[1024]; va_listarglist; va_start( arglist, lpFmt ); _vsnprintf( buff, sizeof buff, lpFmt, arglist ); va_end( arglist );
DWORD len; HANDLE herr = GetStdHandle(STD_OUTPUT_HANDLE); if(herr != INVALID_HANDLE_value) { WriteFile(herr, buff, strlen(buff), &len, NULL); WriteFile(herr, "\r\n", 2, &len, NULL); }else { FILE *fp = fopen("SvcHost.DLL.log", "a"); if(fp) { char date[20], time[20]; fprintf(fp, "%s %s - %s\n", _strdate(date), _strtime(time), buff); if(!stderr) fclose(fp); } }
OutputDebugString(buff); }
|
| |
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|