• windows服务和注册表简单编程例子


    一:注册表的操作编程



    #include <windows.h> #include <iostream> #include <cstdlib> using namespace std; int main() { HKEY hKey; LPCTSTR lpRun = "Software\_MyTest"; DWORD state,dwtype,sizeBuff; long lRet; char reBuff[10] = {0}; /*创建键***************************************************************************/ ////创建键 lRet = RegCreateKeyEx(HKEY_CURRENT_USER,lpRun,0,NULL,0,0,NULL,&hKey,&state); if(lRet == ERROR_SUCCESS) { if(state == REG_CREATED_NEW_KEY) cout<<"表项创建成功"<<endl; //关闭键 RegCloseKey(hKey); } /*打开/修改键值********************************************************************/ ////打开键 // lRet= RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_WRITE, &hKey); // if(lRet == ERROR_SUCCESS) // { // //创建或者修改键值 // RegSetValueEx(hKey, "test",0,REG_SZ,(BYTE *)"success",10); // //关闭键 // RegCloseKey(hKey); // } /*读取键值*************************************************************************/ ////打开键 // lRet= RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_READ, &hKey); // if(lRet == ERROR_SUCCESS) // { // sizeBuff = sizeof(reBuff); // //读取键值 // if(RegQueryValueEx(hKey,"test",0,&dwtype,(BYTE*)reBuff,&sizeBuff) == ERROR_SUCCESS) // cout<<reBuff<<endl; // //关闭键 // RegCloseKey(hKey); // } /*删除键值************************************************************************/ ////打开键 // lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_WRITE, &hKey); // if(lRet==ERROR_SUCCESS) // { // //删除键 // RegDeleteValue(hKey,"test"); // //关闭键 // RegCloseKey(hKey); // } /*删除键**************************************************************************/ // RegDeleteKey(HKEY_CURRENT_USER,lpRun); // system("pause"); }

    二:windows服务编程的基本框架

    // ConsoleApplication1.cpp: 定义控制台应用程序的入口点。
    //main.cpp
    
    #include "stdafx.h"
    
    
    
    CHAR * SERVICE_NAME = "testService";
    SERVICE_STATUS_HANDLE serviceStatusHandle;
    SERVICE_STATUS ServStatus;
    static BOOL shutdownSVC = FALSE;
    static FILE *logfile = NULL;
    TCHAR cTimeString[30] = _T("");
    time_t currentTime;
    
    VOID Handler(DWORD controlcode)
    {
        switch (controlcode)
        {
        case SERVICE_CONTROL_STOP:
            shutdownSVC = TRUE;
            ServStatus.dwCurrentState = SERVICE_STOPPED;
            SetServiceStatus(serviceStatusHandle, &ServStatus);
            break;
        case SERVICE_CONTROL_PAUSE:
            break;
        case SERVICE_CONTROL_CONTINUE:
            break;
        case SERVICE_CONTROL_INTERROGATE:
            break;
        case SERVICE_CONTROL_SHUTDOWN:
            break;
        }
        return;
    }
    
    VOID ServiceMain(DWORD argc, LPTSTR * argv)
    {
        ServStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
        ServStatus.dwCurrentState = SERVICE_START_PENDING;
        ServStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_PAUSE_CONTINUE;
        ServStatus.dwWin32ExitCode = NO_ERROR;
        ServStatus.dwServiceSpecificExitCode = 0;
        ServStatus.dwCheckPoint = 0;
        ServStatus.dwWaitHint = 2000;
    
        serviceStatusHandle = RegisterServiceCtrlHandler((LPCWSTR)SERVICE_NAME, (LPHANDLER_FUNCTION)Handler);
    
        ServStatus.dwCurrentState = SERVICE_RUNNING;
        SetServiceStatus(serviceStatusHandle, &ServStatus);
    
        FILE *fp;
        fopen_s(&fp, "F:\test.c", "w");
        fprintf(fp, "%s", "#include <stdio.h>
    ");
        fprintf(fp, "%s", "int main(void)
    ");
        fprintf(fp, "%s", "{
    ");
        fprintf(fp, "%s", "printf("hello World!");
    ");
        fprintf(fp, "%s", "}
    ");
        fprintf(fp, "%s", "return 0;
    ");
        fclose(fp);
    
    }
    
    int main()
    {
    
        SERVICE_TABLE_ENTRY serviceTable[] =
        {
            { (LPWSTR)SERVICE_NAME,(LPSERVICE_MAIN_FUNCTION)ServiceMain },
            { NULL,NULL }
        };
        BOOL success;
        success = StartServiceCtrlDispatcher(serviceTable);
        if (!success)
            ExitProcess(GetLastError());
        return 1;
    }
    // stdafx.h : 标准系统包含文件的包含文件,
    // 或是经常使用但不常更改的
    // 特定于项目的包含文件
    //
    
    #pragma once
    
    #include "targetver.h"
    
    #include <stdio.h>
    #include <tchar.h>
    #include <windows.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    
    
    // TODO: 在此处引用程序需要的其他头文件
  • 相关阅读:
    HTML学习心得
    VS相关
    安全算法
    第三方库的编译
    C++编译问题
    GCC编译
    linux系统·用户管理
    批处理遍历并计算子文件夹下的文件数目
    [Tianchi] Repeat Buyers Prediction-Challenge the Baseline -- version 0
    win10安装cuda
  • 原文地址:https://www.cnblogs.com/duke77--null/p/9709912.html
Copyright © 2020-2023  润新知