1.创建和修改注册表

 BOOL CTestToolCtr::GetHkey(CString strHkey, HKEY& hkey)
{
if ( == strHkey.CompareNoCase(_T("HKEY_CLASSES_ROOT")))
{
hkey = HKEY_CLASSES_ROOT;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_CURRENT_CONFIG")))
{
hkey = HKEY_CURRENT_CONFIG;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_CURRENT_USER")))
{
hkey = HKEY_CURRENT_USER;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_LOCAL_MACHINE")))
{
hkey = HKEY_LOCAL_MACHINE;
}
else if ( == strHkey.CompareNoCase(_T("HKEY_USERS")))
{
hkey = HKEY_USERS;
}
else
{
return FALSE;
}
return TRUE;
} BOOL CTestToolCtr::CreateKey(CString strHkey,
                   CString strSubKey,
                   CString strName,
                   CString strValue)
{
if (strSubKey.IsEmpty() || strName.IsEmpty() || strValue.IsEmpty())
{
return FALSE;
} HKEY hkey;
HKEY hNewkey; if (!GetHkey(strHkey,hkey))
{
return FALSE;
} DWORD dwDisp;
if (ERROR_SUCCESS != RegCreateKeyEx(hkey, strSubKey, NULL,
NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS,
NULL, &hNewkey, &dwDisp))
{
return FALSE;
} if(ERROR_SUCCESS != RegSetValueExA(hNewkey, strName, NULL,
REG_SZ, (const BYTE*)strValue.GetBuffer(),
strlen(strValue)))
{
RegCloseKey(hNewkey);
return FALSE;
} RegCloseKey(hNewkey);
return TRUE;
}

2. 删除注册表

 BOOL CTestToolCtr::DelKey(CString strHkey, CString strSubKey, CString strName)
{
if (strSubKey.IsEmpty() || strName.IsEmpty())
{
return FALSE;
}
HKEY hkey;
if (!GetHkey(strHkey,hkey))
{
return FALSE;
} if (SHDeleteValue(hkey,strSubKey,strName) != ERROR_SUCCESS)
{
return FALSE;
}
return TRUE;
}

3. 查询注册表

 BOOL CTestToolCtr::QueryKey(CString strHkey, 
                 CString strSubKey,
                  CString strName,
                 CString& strValue)
{
strValue.Empty();
if (strSubKey.IsEmpty() || strName.IsEmpty())
{
return FALSE;
} HKEY hkey;
HKEY hNewkey;
if (!GetHkey(strHkey,hkey))
{
return FALSE;
} DWORD dwDisp;
if (ERROR_SUCCESS != RegCreateKeyEx(hkey, strSubKey, NULL, NULL,
REG_OPTION_VOLATILE, KEY_READ, NULL,
&hNewkey, &dwDisp))
{
return FALSE;
} char szData[];
memset(szData, , sizeof(szData)); DWORD dwLength = sizeof(szData);
if (ERROR_SUCCESS != RegQueryValueExA(hNewkey, strName, NULL, NULL,
(LPBYTE)szData, &dwLength))
{
RegCloseKey(hNewkey);
return FALSE;
}
strValue = szData;
RegCloseKey(hNewkey);
return TRUE; }

MFC操作注册表的更多相关文章

  1. [转]C#操作注册表

    原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主 ...

  2. [荐]使用Js操作注册表

    使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问 ...

  3. c++ 操作注册表

    1.       注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...

  4. .Net操作注册表--un

    C#操作注册表 导入命名空间 Using MicroSoft.Win32;//64位系统装的64位版本

  5. C#操作注册表全攻略

    相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项 ...

  6. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .

    转:http://blog.csdn.net/smartsmile2012/article/details/8682295 #region 获取cpu序列号 硬盘ID 网卡硬地址 /**/ /// & ...

  7. VBS 操作注册表 十六进制

    使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRe ...

  8. win7 64bit+vs2010 操作注册表

    注册表五个根键 HKEY_CLASSES_ROOT--管理文件系统  HKEY_LOCAL_MACHINE--管理当前系统硬件配置  HKEY_LOCAL_USER--管理系统当前用户配置  HKEY ...

  9. How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置

    原文:How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置 IS脚本操作注册表在64位平台下必须有特殊的设置 if (SYSINFO.bIsWow64) then ...

随机推荐

  1. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  2. 【gulp】工作中的实战

    写这篇文章的目的是为了以后的项目中懒得再去配gulp,直接可以拿这篇博客中的来用,因为有时候配置还是挺烦人的. gulp相关插件的介绍 用法比较简单,假设大家都会用gulp,下面主要介绍一下一些插件的 ...

  3. bootstrap学习笔记--bootstrap排版类的使用

    标题 Bootstrap 中定义了所有的 HTML 标题(h1 到 h6)的样式,这个和一般的html没啥区别.请看下面的实例: <h1>测试1 h1</h1> <h2& ...

  4. Eclipse换背景色

    上班后,长时间看代码,眼睛感觉有些疲惫,就想想如果能换个肤色就好了,于是在网上搜了一下,果真Eclipse提供了这个方面功能,心情小激动, 顿时感觉萌萌哒,于是乐呵呵的把肤色改了.在这感谢网上的亲们, ...

  5. Mac下Jenkins+SVN+Xcode构建持续

    1 安装Jenkins Jenkins是基于Java开发的一种持续集成工具.所以呢,要使用Jenkins必须使用先安装JDK. JDK安装 JDK 下载地址 jdk 1.8.png 安装JDK的过程略 ...

  6. Xshell5 里桌面显示数据调大!!!

    今天告诉大家一个好用的技巧, 在Xshell5下工作,屏幕上很容易积攒数据量,尤其是编译的时候,(当然你编译的时候可以重定向到一个文件中,也可以只重定向编译错误的信息): 这个时候,你想观看之前的编译 ...

  7. 报错com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0

    看着错误信息应该是从高版本换成低版本报的错误,然而我的JDK并没有变动.会像昨天走之前干了什么? 自己在AndroidStudio上倒弄自己的小项目,更新了build tools到24了 删除24,e ...

  8. CSS清浮动处理(Clear与BFC)

    在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 <!doctype html> <h ...

  9. WinForm与WPF下跨线程调用控件

    Winform下: public delegate void UpadataTextCallBack(string str,TextBox text); public void UpadtaText( ...

  10. Java的国际化(i18n)

    http://blog.csdn.net/csuliky/article/details/4225800 1. Java国际化简介 Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用, ...