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

#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"

 

转载于:https://www.cnblogs.com/qiangua/archive/2013/04/14/3019967.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值