亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? svcs.cpp

?? 一個完整的驅(qū)動安裝程序 一個完整的驅(qū)動安裝程序
?? CPP
字號:
#include <stdio.h>
#include <windows.h>
#include <Winsvc.h>

LPENUM_SERVICE_STATUS EnumServices(SC_HANDLE, LPDWORD);
BOOL InstallService(SC_HANDLE hSCManager, LPCTSTR ServiceName, LPCTSTR ServiceExe);
BOOL RemoveService(SC_HANDLE hSCManager, LPCTSTR ServiceName);
BOOL StartService(SC_HANDLE hSCManager, LPCTSTR ServiceName);
BOOL StopService(SC_HANDLE hSCManager, LPCTSTR ServiceName);
BOOL IsAdmin(void);
void err_show(char*);
void Usage(char*);

int main(int argc, char* argv[])
{
	SC_HANDLE hSCManager = NULL;
	int		  nRet = 0;

	nRet = IsAdmin();
	if(!nRet)
	{
		printf("Must administrator privilege!\n");
	}

	//
	// 打開服務(wù)控制管理器
	//
	hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
	if(hSCManager == NULL)
	{
		fprintf(stderr, "OpenSCManager() failed. --err: %d\n", GetLastError());
		return -1;
	}

	//
	// 調(diào)用EnumServices列舉系統(tǒng)中的服務(wù)
	//
	LPENUM_SERVICE_STATUS lpServices = NULL;
	DWORD dwServicesReturned = 0;
	lpServices = EnumServices(hSCManager, &dwServicesReturned);
	if(lpServices == 0)
	{
		free(lpServices);
		CloseServiceHandle(hSCManager);
		return -1;
	}
	
	//
	// 顯示服務(wù)信息
	//

	if(argc == 2)
	{
		//
		// 顯示幫助信息
		//
		if(!stricmp(argv[1], "-h") || !stricmp(argv[1], "-help"))
		{
			Usage(argv[0]);
			return 0;
		}

		for(DWORD i = 0; i < dwServicesReturned; i++, lpServices++)
		{
			if(!stricmp(lpServices->lpServiceName, argv[1]))
				break;
		}

		if(i == dwServicesReturned)
		{
			printf("Service not found!\n");
			free(lpServices);
			CloseServiceHandle(hSCManager);
			return -1;
		}

		printf("[%s]\n", lpServices->lpDisplayName);
		printf("\tService Name: %s\n", lpServices->lpServiceName);
		printf("\tService Type: ");
		switch(lpServices->ServiceStatus.dwServiceType)
		{
		case SERVICE_FILE_SYSTEM_DRIVER: printf("File System Driver\n");
			break;
		case SERVICE_KERNEL_DRIVER: printf("Device Driver\n");
			break;
		default: printf("User-Mode Service\n");
			break;
		}

		printf("\tState: ");
		switch(lpServices->ServiceStatus.dwCurrentState)
		{
		case SERVICE_PAUSED: printf("PAUSED\n");
			break;
		case SERVICE_RUNNING: printf("RUNNING\n");
			break;
		case SERVICE_STOPPED: printf("STOPPED\n");
			break;
		default: printf("PENDING\n");
			break;
		}

		free(lpServices);
		CloseServiceHandle(hSCManager);
		return 0;
	}
	if(argc == 1)
	{
		for(DWORD i = 0; i < dwServicesReturned; i++, lpServices++)
			printf("%s    [%s]\n", lpServices->lpServiceName,
				lpServices->lpDisplayName);
		printf("\n\t\tTotal %d Service(s).\n\n", dwServicesReturned);

		free(lpServices);
		CloseServiceHandle(hSCManager);
		return 0;
	}

	// ------------------------
	// 分析命令行參數(shù)
	// ------------------------

	//
	// 安裝服務(wù)
	//
	if(!stricmp(argv[1], "-install"))
	{
		if(argc != 4)
		{
			Usage(argv[0]);
			return 0;
		}
		nRet = InstallService(hSCManager, argv[2], argv[3]);
		if(!nRet)
		{
			printf("Install service failed.\n");
			return -1;
		}
	}

	//
	// 卸載服務(wù)
	//
	if(!stricmp(argv[1], "-remove"))
	{
		if(argc != 3)
		{
			Usage(argv[0]);
			return 0;
		}
		nRet = RemoveService(hSCManager, argv[2]);
		if(!nRet)
		{
			printf("Remove service failed.\n");
			return -1;
		}
	}

	//
	// 啟動服務(wù)
	//
	if(!stricmp(argv[1], "-start"))
	{
		if(argc != 3)
		{
			Usage(argv[0]);
			return 0;
		}
		nRet = StartService(hSCManager, argv[2]);
		if(!nRet)
		{
			printf("Start service failed.\n");
			return -1;
		}
	}

	//
	// 停止服務(wù)
	//
	if(!stricmp(argv[1], "-stop"))
	{
		if(argc != 3)
		{
			Usage(argv[0]);
			return 0;
		}
		nRet = StopService(hSCManager, argv[2]);
		if(!nRet)
		{
			printf("Stop service failed.\n");
			return -1;
		}
	}
	// -----------------------------------------------------

	CloseServiceHandle(hSCManager);
	return 0;
}

//
//  EnumServices
//  列舉系統(tǒng)的驅(qū)動
//  ----------------------
//  參數(shù):
//        [IN]  SC_HANDLE hSCManager    服務(wù)管理器句柄
//        [OUT] LPDWORD   lpdwServices  系統(tǒng)中安裝的驅(qū)動的數(shù)量
//  返回值:
//		成功返回ENUM_SERVICE_STATUS結(jié)構(gòu)的指針,否則返回NULL
//  
LPENUM_SERVICE_STATUS EnumServices(SC_HANDLE hSCManager, LPDWORD lpdwServices)
{
	DWORD cbBytesNeeded = 0;
	DWORD cbBufSize = 0;
	DWORD dwServicesReturned = 0;
	
	int	  nRet = 0;
	
	//
	// 首次調(diào)用EnumServicesStatus確定緩沖區(qū)的大小,由cbBytesNeeded返回
	//
	nRet = EnumServicesStatus(
		hSCManager,
		SERVICE_DRIVER,
		SERVICE_STATE_ALL,
		NULL,
		0,
		&cbBytesNeeded,
		lpdwServices,
		0);

	LPENUM_SERVICE_STATUS lpServices = (LPENUM_SERVICE_STATUS) malloc(cbBytesNeeded);
		
	cbBufSize = cbBytesNeeded;

	nRet = EnumServicesStatus(
		hSCManager,
		SERVICE_DRIVER,
		SERVICE_STATE_ALL,
		lpServices,
		cbBufSize,
		&cbBytesNeeded,
		lpdwServices,
		0);
	if(nRet == 0)
	{
		err_show("EnumServicesStatus()");
		return NULL;
	}

	return lpServices;
}

//
//  InstallService
//  安裝服務(wù)
//  參數(shù):
//      [IN] SC_HANDLE hSCManager   服務(wù)管理器句柄
//      [IN] LPCTSTR   ServiceName  服務(wù)名稱
//      [IN] LPCTSTR   ServiceExe   可執(zhí)行文件(需全路徑)
//  輸出:
//  成功:返回TRUE,否則返回FALSE
//
BOOL InstallService(SC_HANDLE hSCManager, LPCTSTR ServiceName, LPCTSTR ServiceExe)
{
    SC_HANDLE  schService;

	//
	// so #$%@! ...:)
	//
	printf("Install %s... ", ServiceExe);
    schService = CreateService( hSCManager,				 // SCManager database
                                ServiceName,             // name of service
                                ServiceName,             // name to display
                                SERVICE_ALL_ACCESS,      // desired access
                                SERVICE_KERNEL_DRIVER,   // service type
                                SERVICE_DEMAND_START,    // start type
                                SERVICE_ERROR_NORMAL,    // error control type
                                ServiceExe,              // service's binary
                                NULL,                    // no load ordering group
                                NULL,                    // no tag identifier
                                NULL,                    // no dependencies
                                NULL,                    // LocalSystem account
                                NULL                     // no password
                               );
    if (schService == NULL)
	{
		if(GetLastError() == ERROR_SERVICE_EXISTS)
		{
			printf("Service has already installed!\n");
		}
		err_show("CreateService()");
        return FALSE;
	}
	printf("Ok!\n");

    CloseServiceHandle(schService);
    return TRUE;
}

//
//  StartService
//  啟動服務(wù)
//  ----------------
//  參數(shù):
//      [IN] SC_HANDLE hSCManager 服務(wù)管理器句柄
//      [IN] LPCTSTR   ServiceName 驅(qū)動名稱
//  返回值:
//      成功返回TRUE,否則返回FALSE
//
BOOL StartService(SC_HANDLE hSCManager, LPCTSTR ServiceName)
{
    SC_HANDLE  schService = NULL;
    int        nRet = 0;
	
    schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS);
    if(schService == NULL)
	{
		if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST)
		{
			printf("Service is not exist!\n");
			return FALSE;
		}
		err_show("OpenService()");
        return FALSE;
	}

    nRet = StartService(schService, 0, NULL);
	if(!nRet)
	{
		if(GetLastError() == ERROR_SERVICE_ALREADY_RUNNING)
		{
			printf("Service is already running!\n");
			return nRet;
		}
		err_show("StartService()");
	}

    CloseServiceHandle(schService);
    return nRet;
}

//
//  StopService
//  停止驅(qū)動
//  ---------------
//  參數(shù):
//      [IN] SC_HANDLE hSCManager  服務(wù)管理器句柄
//      [IN] LPCTSTR   ServiceName 服務(wù)名稱
//  返回值:
//      成功返回TRUE,否則返回FALSE
//
BOOL StopService(SC_HANDLE hSCManager, LPCTSTR ServiceName)
{
    SC_HANDLE      schService = NULL;
    SERVICE_STATUS ServiceStatus;
	int            nRet = 0;

    schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS);
    if(schService == NULL)
        return FALSE;

    nRet = ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus);
	if(!nRet)
	{
		switch(GetLastError())
		{
		case ERROR_SERVICE_NOT_ACTIVE:
			printf("Service has stopped!\n");
			return nRet;

		case ERROR_INVALID_SERVICE_CONTROL:
			printf("The requested control code is not valid!\n");
			return nRet;
		}
		err_show("ControlService()");
	}
    
    CloseServiceHandle(schService);
    return nRet;
}

//
//  RemoveService
//  卸載服務(wù)
//  ------------
//  參數(shù):
//      [IN] SC_HANDLE hSCManager   服務(wù)管理器句柄
//      [IN] LPCTSTR   ServiceName  服務(wù)名稱
//  返回值:
//      成功返回TRUE,否則返回FALSE
//
BOOL RemoveService(SC_HANDLE hSCManager, LPCTSTR ServiceName)
{
    SC_HANDLE schService;
    int	      nRet = 0;

    schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS);
    if(schService == NULL)
		return FALSE;

    nRet = DeleteService(schService);
	if(!nRet)
	{
		err_show("DeleteService()");
	}

    CloseServiceHandle(schService);

    return nRet;
}

//
//  IsAdmin
//  判斷當(dāng)前用戶是否有Administrator的權(quán)限
//  -----------------------------------------
//  參數(shù):
//      N/A
//  返回值:
//      若具有權(quán)限返回TRUE,否則返回FALSE
//
BOOL IsAdmin(void)
{
	HANDLE                   hAccessToken;
    BYTE                     *InfoBuffer;
    PTOKEN_GROUPS            ptgGroups;
    DWORD                    dwInfoBufferSize;
    PSID                     psidAdministrators;
    SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;
    UINT                     i;
    BOOL                     bRet = FALSE;

    if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken))
		goto cleanup;

    InfoBuffer = new BYTE[1024];
    if(!InfoBuffer)
		goto cleanup;

    bRet = GetTokenInformation(hAccessToken,
                               TokenGroups,
                               InfoBuffer,
                               1024,
                               &dwInfoBufferSize);

    CloseHandle(hAccessToken);

    if(!bRet)
       goto cleanup;

    if( !AllocateAndInitializeSid(&siaNtAuthority,
                                 2,
                                 SECURITY_BUILTIN_DOMAIN_RID,
                                 DOMAIN_ALIAS_RID_ADMINS,
                                 0,0,0,0,0,0,
                                 &psidAdministrators) )
       goto cleanup;

    bRet = FALSE;

    ptgGroups = (PTOKEN_GROUPS)InfoBuffer;

    for(i = 0; i < ptgGroups->GroupCount; i++)
    {
        if(EqualSid(psidAdministrators,ptgGroups->Groups[i].Sid))
        {
            bRet = TRUE;
            break;
        }
    }

    FreeSid(psidAdministrators);

cleanup:

    if(InfoBuffer)
		delete InfoBuffer;

    return bRet;
}

void err_show(char* msg)
{
	fprintf(stderr, "%s failed. --err: %d\n", msg, GetLastError());
}

void Usage(char* msg)
{
	printf("+------------------------------+\n");
	printf("|      Services tool v0.1      |\n");
	printf("|      Write By CDrea          |\n");
	printf("|      2004-11-1               |\n");
	printf("|      thx to sinister         |\n");
	printf("|   http://www.safechina.net   |\n");
	printf("+------------------------------+\n");	
	printf("USAGE:\n");
	printf("  %s [[-install srv exe] | [-remove srv] | [-start srv] | [-stop srv]] [srv]\n\n", msg);
	printf("    %s          Show all service\n", msg);
	printf("    %s srv      Show status of srv_name\n", msg);
	printf("    -install srv exe     Install a service, and must full path of exe\n");
	printf("    -remove  srv         Remove a service\n");
	printf("    -start   srv         Start a service\n");
	printf("    -stop    srv         Stop a service\n");
	printf("eg.\n");
	printf("  %s -install fw c:\\fw.sys", msg);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区视频在线观看| 国产做a爰片久久毛片| 欧美一个色资源| av一二三不卡影片| 免费成人结看片| 亚洲精品成人精品456| 2020国产精品久久精品美国| 欧美影院午夜播放| 成人视屏免费看| 麻豆一区二区在线| 婷婷国产v国产偷v亚洲高清| 日韩毛片在线免费观看| 久久无码av三级| 欧美一二三区精品| 欧美视频一区二区三区四区| 99r精品视频| 国产精品亚洲成人| 久久精品国产亚洲一区二区三区| 一区二区三区四区蜜桃| 国产精品国产三级国产aⅴ中文 | av一区二区久久| 国产在线一区二区综合免费视频| 亚洲国产另类av| 一区二区在线观看免费| 国产精品久久久久久久久免费相片 | 3751色影院一区二区三区| 色综合一区二区| 99久久er热在这里只有精品66| 久久99日本精品| 久久成人精品无人区| 日韩高清在线一区| 无吗不卡中文字幕| 亚洲第一二三四区| 亚洲国产精品久久人人爱蜜臀| 一区二区三区中文字幕| 亚洲日本在线a| 亚洲男人电影天堂| 亚洲精品水蜜桃| 亚洲男帅同性gay1069| 亚洲欧洲无码一区二区三区| 国产精品久久久久四虎| 中文成人av在线| 国产精品福利一区二区三区| 国产精品欧美精品| 日韩一区中文字幕| 亚洲精品免费电影| 亚洲成人一二三| 午夜欧美大尺度福利影院在线看| 三级一区在线视频先锋| 日本中文字幕一区二区视频 | 一本到一区二区三区| 91亚洲精品乱码久久久久久蜜桃| av成人老司机| 在线观看日韩电影| 91精品在线一区二区| 日韩视频在线永久播放| 精品av综合导航| 国产清纯美女被跳蛋高潮一区二区久久w | 懂色av一区二区夜夜嗨| av在线一区二区三区| 日本高清不卡视频| 欧美精品亚洲二区| 久久综合九色综合97_久久久| 欧美激情一区二区三区不卡| 亚洲人成伊人成综合网小说| 亚洲成人激情综合网| 美国毛片一区二区| 国产精品一区二区视频| 91视视频在线观看入口直接观看www| 91久久香蕉国产日韩欧美9色| 欧美精品黑人性xxxx| 精品国产乱码久久久久久闺蜜 | 日韩综合一区二区| 韩国毛片一区二区三区| 99久久综合国产精品| 欧美日韩精品免费| 久久午夜羞羞影院免费观看| 亚洲欧美在线aaa| 天天色综合成人网| 国产精品自拍三区| 欧美性受xxxx黑人xyx性爽| 欧美大片一区二区| 一区二区在线观看免费视频播放| 美女视频黄a大片欧美| 欧美不卡一区二区三区四区| 国产视频一区二区在线观看| 亚洲午夜精品网| 国产成人综合亚洲91猫咪| 在线亚洲高清视频| 国产婷婷色一区二区三区四区| 亚洲一区视频在线| 成人免费毛片a| 日韩欧美资源站| 一区二区三区精品视频| 国产麻豆精品95视频| 欧美日韩电影一区| 国产精品国产三级国产a| 蜜桃精品视频在线观看| 91欧美激情一区二区三区成人| 欧美videossexotv100| 亚洲精品欧美激情| 成人亚洲一区二区一| 日韩免费看的电影| 亚洲午夜久久久久久久久电影院| 丁香六月久久综合狠狠色| 91精品久久久久久久91蜜桃| 亚洲欧美色图小说| 丁香六月综合激情| 精品国产三级电影在线观看| 午夜视频在线观看一区二区三区| 99久久国产综合精品色伊| 久久精品人人做人人爽97| 蜜桃视频一区二区| 欧美日韩一区高清| 亚洲六月丁香色婷婷综合久久 | 视频一区二区三区在线| 99久精品国产| 中文一区二区完整视频在线观看| 久久精品国产免费| 欧美一级专区免费大片| 亚洲福利视频导航| 欧美制服丝袜第一页| 亚洲丝袜美腿综合| 成人黄色软件下载| 欧美激情一区在线| 国产高清成人在线| 久久久噜噜噜久久人人看 | 麻豆精品一区二区综合av| 色狠狠av一区二区三区| 日韩码欧中文字| 色综合天天性综合| 最新日韩在线视频| 色综合久久中文综合久久牛| 亚洲视频1区2区| 99精品久久免费看蜜臀剧情介绍| 国产精品久久久久四虎| 99久久综合99久久综合网站| 国产精品乱码一区二三区小蝌蚪| 国产成人精品www牛牛影视| 国产网站一区二区三区| 国产黄色成人av| 国产精品亲子伦对白| 不卡av在线网| 亚洲精品欧美激情| 欧美日本韩国一区二区三区视频| 亚洲成av人片一区二区梦乃| 欧美日韩国产综合一区二区| 舔着乳尖日韩一区| 欧美成人一区二区三区片免费 | 五月激情六月综合| 日韩一卡二卡三卡| 国产一区二区三区免费在线观看| 国产亚洲一本大道中文在线| 成人国产视频在线观看| 有码一区二区三区| 在线成人免费视频| 国产一区二区三区免费播放| 国产精品每日更新在线播放网址| 色综合久久久网| 日韩电影在线一区二区| 精品国产欧美一区二区| 成人免费高清在线| 亚洲自拍偷拍网站| 欧美电影免费观看完整版| 国产伦精品一区二区三区免费| 中文字幕一区二区视频| 欧美片网站yy| 国产精品一区在线| 一区二区三区欧美| 日韩视频一区二区三区 | 欧美午夜精品免费| 免费人成精品欧美精品| 欧美激情在线免费观看| 欧美系列亚洲系列| 国产九色精品成人porny| 亚洲色图色小说| 欧美一区二区不卡视频| 成人小视频免费在线观看| 亚洲风情在线资源站| 久久人人爽人人爽| 精品视频全国免费看| 国产精品一卡二卡| 亚洲一二三四在线观看| 精品第一国产综合精品aⅴ| 一本色道**综合亚洲精品蜜桃冫| 蜜桃视频在线观看一区二区| 亚洲日本在线天堂| 久久尤物电影视频在线观看| 91极品视觉盛宴| 国产福利一区二区| 五月婷婷激情综合| 国产精品国产馆在线真实露脸| 欧美一二区视频| 欧美天堂一区二区三区| 成人免费视频国产在线观看| 蜜臂av日日欢夜夜爽一区| 亚洲在线观看免费| 日本一区二区三区在线观看| 欧美一区二区三区四区五区| 色噜噜久久综合|