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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ntservice.cpp

?? UDP介紹
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// NTService.cpp
//
// Implementation of CNTService

#include <windows.h>
#include <stdio.h>
#include "NTService.h"

// static variables
CNTService* CNTService::m_pThis = NULL;

CNTService::CNTService(const char* szServiceName)
{
    // copy the address of the current object so we can access it from
    // the static member callback functions. 
    // WARNING: This limits the application to only one CNTService object. 
    m_pThis = this;
    
    // Set the default service name and version
    strncpy(m_szServiceName, szServiceName, sizeof(m_szServiceName)-1);
    m_iMajorVersion = 1;
    m_iMinorVersion = 0;
    m_hEventSource = NULL;

    // set up the initial service status 
    m_hServiceStatus = NULL;
    m_Status.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
    m_Status.dwCurrentState = SERVICE_STOPPED;
    m_Status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
    m_Status.dwWin32ExitCode = 0;
    m_Status.dwServiceSpecificExitCode = 0;
    m_Status.dwCheckPoint = 0;
    m_Status.dwWaitHint = 0;
    m_bIsRunning = FALSE;
}

CNTService::~CNTService()
{
    DebugMsg("CNTService::~CNTService()");
    if (m_hEventSource) {
        ::DeregisterEventSource(m_hEventSource);
    }
}

////////////////////////////////////////////////////////////////////////////////////////
// Default command line argument parsing

// Returns TRUE if it found an arg it recognised, FALSE if not
// Note: processing some arguments causes output to stdout to be generated.
BOOL CNTService::ParseStandardArgs(int argc, char* argv[])
{
    // See if we have any command line args we recognise
    if (argc <= 1) return FALSE;

    if (_stricmp(argv[1], "-v") == 0) {

        // Spit out version info
        printf("%s Version %d.%d\n",
               m_szServiceName, m_iMajorVersion, m_iMinorVersion);
        printf("The service is %s installed\n",
               IsInstalled() ? "currently" : "not");
        return TRUE; // say we processed the argument

    } else if (_stricmp(argv[1], "-i") == 0) {

        // Request to install.
        if (IsInstalled()) {
            printf("%s is already installed\n", m_szServiceName);
        } else {
            // Try and install the copy that's running
            if (Install()) {
                printf("%s installed\n", m_szServiceName);
            } else {
                printf("%s failed to install. Error %d\n", m_szServiceName, GetLastError());
            }
        }
        return TRUE; // say we processed the argument

    } else if (_stricmp(argv[1], "-u") == 0) {

        // Request to uninstall.
        if (!IsInstalled()) {
            printf("%s is not installed\n", m_szServiceName);
        } else {
            // Try and remove the copy that's installed
            if (Uninstall()) {
                // Get the executable file path
                char szFilePath[_MAX_PATH];
                ::GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));
                printf("%s removed. (You must delete the file (%s) yourself.)\n",
                       m_szServiceName, szFilePath);
            } else {
                printf("Could not remove %s. Error %d\n", m_szServiceName, GetLastError());
            }
        }
        return TRUE; // say we processed the argument
    
    }
         
    // Don't recognise the args
    return FALSE;
}

////////////////////////////////////////////////////////////////////////////////////////
// Install/uninstall routines

// Test if the service is currently installed
BOOL CNTService::IsInstalled()
{
    BOOL bResult = FALSE;

    // Open the Service Control Manager
    SC_HANDLE hSCM = ::OpenSCManager(NULL, // local machine
                                     NULL, // ServicesActive database
                                     SC_MANAGER_ALL_ACCESS); // full access
    if (hSCM) {

        // Try to open the service
        SC_HANDLE hService = ::OpenService(hSCM,
                                           m_szServiceName,
                                           SERVICE_QUERY_CONFIG);
        if (hService) {
            bResult = TRUE;
            ::CloseServiceHandle(hService);
        }

        ::CloseServiceHandle(hSCM);
    }
    
    return bResult;
}

BOOL CNTService::Install()
{
    // Open the Service Control Manager
    SC_HANDLE hSCM = ::OpenSCManager(NULL, // local machine
                                     NULL, // ServicesActive database
                                     SC_MANAGER_ALL_ACCESS); // full access
    if (!hSCM) return FALSE;

    // Get the executable file path
    char szFilePath[_MAX_PATH];
    ::GetModuleFileName(NULL, szFilePath, sizeof(szFilePath));

    // Create the service
    SC_HANDLE hService = ::CreateService(hSCM,
                                         m_szServiceName,
                                         m_szServiceName,
                                         SERVICE_ALL_ACCESS,
                                         SERVICE_WIN32_OWN_PROCESS,
                                         SERVICE_DEMAND_START,        // start condition
                                         SERVICE_ERROR_NORMAL,
                                         szFilePath,
                                         NULL,
                                         NULL,
                                         NULL,
                                         NULL,
                                         NULL);
    if (!hService) {
        ::CloseServiceHandle(hSCM);
        return FALSE;
    }

    // make registry entries to support logging messages
    // Add the source name as a subkey under the Application
    // key in the EventLog service portion of the registry.
    char szKey[256];
    HKEY hKey = NULL;
    strcpy(szKey, "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\");
    strcat(szKey, m_szServiceName);
    if (::RegCreateKey(HKEY_LOCAL_MACHINE, szKey, &hKey) != ERROR_SUCCESS) {
        ::CloseServiceHandle(hService);
        ::CloseServiceHandle(hSCM);
        return FALSE;
    }

    // Add the Event ID message-file name to the 'EventMessageFile' subkey.
    ::RegSetValueEx(hKey,
                    "EventMessageFile",
                    0,
                    REG_EXPAND_SZ, 
                    (CONST BYTE*)szFilePath,
                    strlen(szFilePath) + 1);     

    // Set the supported types flags.
    DWORD dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;
    ::RegSetValueEx(hKey,
                    "TypesSupported",
                    0,
                    REG_DWORD,
                    (CONST BYTE*)&dwData,
                     sizeof(DWORD));
    ::RegCloseKey(hKey);

    LogEvent(EVENTLOG_INFORMATION_TYPE, EVMSG_INSTALLED, m_szServiceName);

    // tidy up
    ::CloseServiceHandle(hService);
    ::CloseServiceHandle(hSCM);
    return TRUE;
}

BOOL CNTService::Uninstall()
{
    // Open the Service Control Manager
    SC_HANDLE hSCM = ::OpenSCManager(NULL, // local machine
                                     NULL, // ServicesActive database
                                     SC_MANAGER_ALL_ACCESS); // full access
    if (!hSCM) return FALSE;

    BOOL bResult = FALSE;
    SC_HANDLE hService = ::OpenService(hSCM,
                                       m_szServiceName,
                                       DELETE);
    if (hService) {
        if (::DeleteService(hService)) {
            LogEvent(EVENTLOG_INFORMATION_TYPE, EVMSG_REMOVED, m_szServiceName);
            bResult = TRUE;
        } else {
            LogEvent(EVENTLOG_ERROR_TYPE, EVMSG_NOTREMOVED, m_szServiceName);
        }
        ::CloseServiceHandle(hService);
    }
    
    ::CloseServiceHandle(hSCM);
    return bResult;
}

///////////////////////////////////////////////////////////////////////////////////////
// Logging functions

// This function makes an entry into the application event log
void CNTService::LogEvent(WORD wType, DWORD dwID,
                          const char* pszS1,
                          const char* pszS2,
                          const char* pszS3)
{
    const char* ps[3];
    ps[0] = pszS1;
    ps[1] = pszS2;
    ps[2] = pszS3;

    int iStr = 0;
    for (int i = 0; i < 3; i++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色八戒一区二区三区| 欧美一区二区日韩一区二区| 91视视频在线观看入口直接观看www | 国产999精品久久久久久| 91久久精品一区二区三| 亚洲精品在线免费播放| 亚洲国产精品久久久久秋霞影院| 国产乱国产乱300精品| 欧美专区亚洲专区| 国产精品久久久久三级| 久久精品二区亚洲w码| 欧美中文一区二区三区| 97久久精品人人做人人爽50路| proumb性欧美在线观看| 国产欧美日韩另类视频免费观看 | 日韩欧美一区在线观看| 中文久久乱码一区二区| 毛片av一区二区三区| 欧美私人免费视频| 国产精品久久久久久久久晋中| 免费久久精品视频| 欧美日韩国产经典色站一区二区三区| 中文成人综合网| 国产精品一线二线三线| 欧美一区二区免费| 日韩高清中文字幕一区| 精品视频色一区| 亚洲自拍偷拍九九九| 99久久久久免费精品国产| 日本一区免费视频| 成人性生交大片| 中文字幕欧美国产| 99久久综合国产精品| 欧美激情一区在线观看| 风间由美一区二区三区在线观看| 精品理论电影在线| 国产麻豆欧美日韩一区| 久久综合九色综合97婷婷| 久久99国产精品尤物| 久久久久国产一区二区三区四区| 国产精品一二三四五| 国产精品素人一区二区| www.视频一区| 一区二区三区精品视频在线| 色天使久久综合网天天| 日韩中文字幕区一区有砖一区 | 懂色av一区二区夜夜嗨| 综合色天天鬼久久鬼色| 欧美三级在线看| 欧美aaaaa成人免费观看视频| 欧美一区二区三区四区视频| 久久99精品一区二区三区| 国产日韩视频一区二区三区| 不卡一区二区中文字幕| 一卡二卡三卡日韩欧美| 7777精品伊人久久久大香线蕉超级流畅 | 午夜精品久久久久久久久久 | 777奇米成人网| 国产精品77777| 亚洲欧美激情一区二区| 欧美精品一二三| 国产精品影视在线观看| 国产精品久久久久久久第一福利 | 欧美xingq一区二区| 成人国产精品免费观看视频| 一区二区三区精品久久久| 欧美一卡2卡3卡4卡| 粗大黑人巨茎大战欧美成人| 亚洲国产精品影院| 久久婷婷成人综合色| 欧洲人成人精品| 国产成人av资源| 五月天丁香久久| 欧美激情一二三区| 777久久久精品| 91在线视频播放| 久久精品99久久久| 亚洲电影在线播放| 中文乱码免费一区二区| 日韩欧美www| 在线观看视频一区| 成人av电影在线观看| 人人精品人人爱| 亚洲欧美欧美一区二区三区| 久久亚洲精品国产精品紫薇| 欧美午夜在线一二页| av在线综合网| 国产精品综合网| 日本v片在线高清不卡在线观看| 成人欧美一区二区三区1314| 日韩一区二区麻豆国产| 欧美伊人久久久久久午夜久久久久| 国产suv精品一区二区三区| 日韩激情一二三区| 亚洲综合无码一区二区| 一区在线播放视频| 国产偷国产偷亚洲高清人白洁| 91精品国产综合久久久蜜臀粉嫩| 色婷婷久久一区二区三区麻豆| 国产成人av电影在线播放| 欧美aaaaaa午夜精品| 日韩高清中文字幕一区| 亚洲香肠在线观看| 亚洲精品日韩综合观看成人91| 欧美精彩视频一区二区三区| 日韩一区二区三区三四区视频在线观看| 91精彩视频在线观看| 99久久伊人精品| 一道本成人在线| 色婷婷av一区二区| 一本到高清视频免费精品| 99久久国产综合色|国产精品| 国产黄色成人av| 国产成人av网站| 成人高清视频在线观看| 成人黄页毛片网站| av在线播放成人| 色综合久久综合| 在线精品国精品国产尤物884a| 欧洲一区在线电影| 欧美日韩久久久| 精品黑人一区二区三区久久| 欧美一区午夜精品| 精品蜜桃在线看| 亚洲国产精品ⅴa在线观看| 中日韩免费视频中文字幕| 中文字幕一区日韩精品欧美| 亚洲三级视频在线观看| 亚洲影视在线播放| 日韩电影网1区2区| 国产美女精品在线| 一本久道中文字幕精品亚洲嫩| 欧美日韩国产一二三| 日韩一区二区不卡| 亚洲国产精品黑人久久久| 悠悠色在线精品| 麻豆精品新av中文字幕| 国产99久久久国产精品| 在线精品视频小说1| 日韩欧美一区二区视频| 国产精品美女久久久久aⅴ | 久久99久国产精品黄毛片色诱| 国产精品综合av一区二区国产馆| 成人免费三级在线| 欧美日韩美女一区二区| 久久蜜臀精品av| 亚洲影视在线观看| 国产剧情一区二区| 欧美日韩在线精品一区二区三区激情| 日韩三级免费观看| 成人免费在线播放视频| 五月婷婷综合在线| 成人免费视频播放| 日韩无一区二区| 亚洲另类在线制服丝袜| 国产一区在线不卡| 欧美在线小视频| 久久精品欧美日韩| 午夜久久电影网| 不卡的av网站| 亚洲精品在线一区二区| 亚洲成精国产精品女| 成人精品亚洲人成在线| 91精品国产福利| 亚洲精品欧美二区三区中文字幕| 久久99精品久久只有精品| 在线观看91精品国产入口| 久久久99久久精品欧美| 天天综合网天天综合色| 97se亚洲国产综合自在线不卡 | 日韩一区二区不卡| 亚洲午夜久久久久久久久久久| 大美女一区二区三区| 日韩欧美第一区| 日韩av午夜在线观看| 色婷婷精品大在线视频| 国产欧美日韩精品a在线观看| 日本aⅴ免费视频一区二区三区| 色综合一个色综合亚洲| 国产女同性恋一区二区| 久久er精品视频| 日韩欧美国产一区二区在线播放 | 欧美精品日韩精品| 悠悠色在线精品| 色噜噜夜夜夜综合网| 亚洲欧洲精品一区二区精品久久久| 精彩视频一区二区三区| 欧美va亚洲va| 黄页网站大全一区二区| 日韩欧美一级在线播放| 麻豆精品在线观看| 欧美xxxx老人做受| 国内久久精品视频| 精品久久久久久久久久久久久久久| 天天av天天翘天天综合网| 欧美私模裸体表演在线观看| 一区二区三区欧美久久| 欧美在线综合视频| 日韩精品免费视频人成| 欧美精品久久久久久久久老牛影院|