• 判断某键值是否存在[注册表操作]


    #include <stdio.h>
    #include <windows.h>
    #define MAX 128
    int main(int argc, char* argv[]) 
    {
    
        // 根键、子键名称、和到子键的句柄
        HKEY hRoot = HKEY_LOCAL_MACHINE;
        char *szSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
        HKEY hKey;
        // 打开指定子键
        DWORD dwDisposition = REG_OPENED_EXISTING_KEY;    // 如果不存在不创建
        LONG lRet = ::RegCreateKeyEx(hRoot, szSubKey, 0, NULL, 
                REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
        if(lRet != ERROR_SUCCESS)
        {
            MessageBox(NULL,"RegCreateKeyEx函数执行失败!","提示",MB_OK);
            return -1;
        }
        unsigned long * lpType=NULL;
        unsigned char * lpData=NULL;
        LPDWORD lpcbDate=NULL;
        LONG lResult  = ::RegQueryValueEx(hKey,"WindowsSelfRun",0,lpType, lpData,lpcbDate);
        if(lResult==ERROR_SUCCESS)
        {
            MessageBox(NULL,"WindowsSelfRun键值已经存在!","提示",MB_OK);
        }
        else
        {
            MessageBox(NULL,"WindowsSelfRun键值不存在!将要写入...","提示",MB_OK);
            //下面可以添加写入键值内容及类型的代码
        }
        // 关闭子键句柄
        ::RegCloseKey(hKey);
        return 0;
    }
    /****************************************************************
    *需要注意的是:32bit的程序写入注册表的位置与64bit程序写入注册表的
    *位置是不相同的。32bit的程序比64bit程序多了一个Wow6432Node。
    *****************************************************************/

    导出不同位置的Run项可以看到:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run]
    "USB3MON"="\"C:\\Program Files (x86)\\Intel\\Intel(R) USB 3.0 eXtensible Host Controller Driver\\Application\\iusb3mon.exe\""
    "Dolby Advanced Audio v2"="\"C:\\Program Files (x86)\\Dolby Advanced Audio v2\\pcee4.exe\" -autostart"
    "331BigDog"="C:\\Program Files (x86)\\USB Camera\\VM331STI.EXE"
    "avgnt"="\"F:\\Avira\\AntiVir Desktop\\avgnt.exe\" /min"
    "WindowsSelfRun"="G:\\vc2012\\注册表重启\\Debug\\注册表重启.exe
    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
    "IAStorIcon"="\"C:\\Program Files\\Intel\\Intel(R) Rapid Storage Technology\\IAStorIconLaunch.exe\" \"C:\\Program Files\\Intel\\Intel(R) Rapid Storage Technology\\IAStorIcon.exe\" 60"
    "IgfxTray"="C:\\Windows\\system32\\igfxtray.exe"
    "HotKeysCmds"="C:\\Windows\\system32\\hkcmd.exe"
    "Persistence"="C:\\Windows\\system32\\igfxpers.exe"
    "Broadcom Wireless Manager UI"="C:\\Program Files\\Broadcom\\Broadcom 802.11 Network Adapter\\WLTRAY.exe"
    "ETDCtrl"=hex(2):25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,\
      6c,00,65,00,73,00,25,00,5c,00,45,00,6c,00,61,00,6e,00,74,00,65,00,63,00,68,\
      00,5c,00,45,00,54,00,44,00,43,00,74,00,72,00,6c,00,2e,00,65,00,78,00,65,00,\
      00,00
    "WindowsSelfRun"="G:\\vc2012\\注册表重启\\x64\\Release\\注册表重启.exe"
  • 相关阅读:
    vs2013配置opencv2.4.13(txt中复制粘贴即可,一次配置永久使用)
    描述性统计量
    Ubuntu创建、删除文件与目录
    Linux下服务器端开发流程及相关工具介绍(C++)
    TCP 协议如何保证可靠传输
    真实记录疑似Linux病毒导致服务器 带宽跑满的解决过程
    Windbg程序调试--转载
    原来问题在这里-我的memory leak诊断历程
    用WinDbg分析Debug Diagnostic Tool生成的Userdump文件
    一个内存增长问题的分析和处理(三)
  • 原文地址:https://www.cnblogs.com/qiangua/p/3019967.html
Copyright © 2020-2023  润新知