操作注册表

操作注册表:

#include <iostream>

#include <atlbase.h>

void Add_Key()
{
	HKEY hSubKey;
	DWORD dwKeyValue = 110;

	RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"), 0, NULL, NULL,KEY_READ | KEY_WRITE, NULL, &hSubKey, NULL);

	if ( ERROR_SUCCESS != RegSetValueEx(hSubKey, TEXT("xgc"), NULL, REG_DWORD, (const byte*)&dwKeyValue, sizeof(DWORD))) {
		printf ("Error\n");
	}

	if( hSubKey!=NULL ){
		RegCloseKey(hSubKey);
	}
}

void Query()
{
	HKEY hKey;
	DWORD dwReturn;
	DWORD dwBufSize = sizeof(DWORD);

	if( RegOpenKeyExW(HKEY_CURRENT_USER,
		_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\")
		,0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
	{
		DWORD error = //RegQueryValueExW(hKey,TEXT("xgc"),0,0, reinterpret_cast<LPBYTE>(&dwReturn), &dwBufSize);
			RegQueryValueExW(hKey,TEXT("xgc"),0,0, reinterpret_cast<LPBYTE>(&dwReturn), &dwBufSize);
		if(error == ERROR_SUCCESS)
		{
			printf("Key value is: %d \n", dwReturn);
		}
		else
		{
			printf("Cannot query for key value; Error is: %d\n", error);
		}
	}
	RegCloseKey(hKey);
}

int main()
{
	 //Add_Key();
	Query();

	std::cout<<"Over"<<std::endl;
	getchar();
	return 0;
}
  

  REG_SZ 类型不一样哦,见如下代码:

#include <iostream>

#include <atlbase.h>
//#include <string>
void Add_Key()
{
	HKEY hSubKey;
	//DWORD dwKeyValue = 110;
	std::wstring str(L"Hello");

	RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"), 0, NULL, NULL,KEY_READ | KEY_WRITE, NULL, &hSubKey, NULL);
	std::cout<<"Length="<<str.size() * sizeof(WCHAR)<<std::endl;
	if ( ERROR_SUCCESS != RegSetValueEx(hSubKey, TEXT("xgc"), NULL, REG_SZ, (const byte*)str.c_str(), str.size() * sizeof(WCHAR)) ) {
		printf ("Error\n");
	}

	if( hSubKey!=NULL ){
		RegCloseKey(hSubKey);
	}
}

void Query()
{
	HKEY hKey;
	LPBYTE pData = NULL;
	DWORD dwBufSize;

	if( RegOpenKeyExW(HKEY_CURRENT_USER,
		_T("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\")
		,0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
	{
		LPBYTE pData = NULL;DWORD Type;
		DWORD error = RegQueryValueEx(hKey,TEXT("xgc"),NULL,&Type,pData,&dwBufSize);
		pData = (LPBYTE)malloc(dwBufSize*sizeof(BYTE));
		error = //RegQueryValueExW(hKey,TEXT("xgc"),0,0, reinterpret_cast<LPBYTE>(&dwReturn), &dwBufSize);
			RegQueryValueExW(hKey,TEXT("xgc"),0,&Type, pData, &dwBufSize);
		if(error == ERROR_SUCCESS)
		{
			printf("Key value is: %ws \n", pData);
		}
		else
		{
			printf("Cannot query for key value; Error is: %d\n", error);
		}
		free(pData);
	}
	RegCloseKey(hKey);
}

int main()
{
	 //Add_Key();
	Query();

	std::cout<<"Over"<<std::endl;
	getchar();
	return 0;
}

  

时间: 2024-08-04 23:03:07

操作注册表的相关文章

[荐]使用Js操作注册表

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

C#操作注册表

下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和删除.判断注册表项是否存在.判断键值是否存在.准备工作:1:要操作注册表,我们必须要引入必要的命名空间: using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支:ClassesRoot,CurrentUser,Users,Loca

Process Monitor监控进程操作注册表如何实现?

http://zhidao.baidu.com/link?url=Kqav4qkQSprC5FnpHPOGJvhqvY9fJ9-Vdx9g_SWh4w5VOusdRJo4Vl7qIdrG4LwRJvraB9s9UipTVOgp7NJvLGIXiaXwWjQz5LP0TX_ixyC Process Monitor监控进程操作注册表如何实现?  2014-09-14 14:485203751 | 浏览 1092 次 操作系统 Process Monitor这个工具是微软的一个监控进程注册表操作,文件

C#操作注册表全攻略

相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项里面写入自己的启动键值来达到自启动的目的,有些病毒还会修改注册表里面来映像劫持杀毒软 件,这是破坏系统的第一步.同时,大多软件(软件的序列号和信息)和硬件信息.系统信息.安全模式等等设置都保存在这里,因此系统的健康在很大程度上要依 赖注册表的健康.       作为编程开发人员,我们有必要了解注册表

易语言操作注册表

关键是了解易语言自带的: “写注册项” 这个方法. 如: 写注册项 (#本地机器, “SOFTWARE\Microsoft\Internet Explorer\MAIN\Start Page”, “http://www.baidu.com”) 这样就在#本地机器中的指定位置键下写入了默认键值信息. 那么第一个参数“#本地机器”代表什么意思呢?   看下图就知道了 以上是易语言和注册表中对应键关系. 具体操作注册表,再上一图片就明白了 以上是易语言通常操作注册表的添加,修改等方法, 值得注意的是:

VBS 操作注册表 十六进制

使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRegistry Set OperationRegistry=WScript.CreateObject("WScript.Shell") Dim Read_Data1,Read_Data2 Read_Data1=OperationRegistry.RegRead("HKCR\.xxf

[转]C#操作注册表

原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主要内容包括: * 注册表项的创建,打开与删除 * 键值的创建(设置值.修改),读取和删除 * 判断注册表项是否存在.判断键值是否存在.准备工作:1:要操作注册表,我们必须要引入必要的命名空间: using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~

C# 访问操作注册表整理

一..net注册表操作简介 .net中Registry 类,RegistryKey 类提供了操作注册表的接口 RegistryValueKind,用于指定操作注册表的数据类型. 二.使用实例 //获取子节点数量 Console.WriteLine(Registry.LocalMachine.SubKeyCount); //获取所有自己点的键值 string[] subs = Registry.LocalMachine.GetSubKeyNames(); foreach (var item in

转 Python模块——_winreg操作注册表

Python模块--_winreg操作注册表 (2010-01-22 13:47:01) 转载▼ 标签: python _winreg 注册表 删除键 name 默认网关 utf-8 it 分类: Python 用python操作修改windows注册表,显然要比用C或者C++简单. 主要参考资料:官方文档:http://docs.python.org/library/_winreg.html 通过python操作注册表主要有两种方式,一种是通过python的内置模块 _winreg,另一种方式

转 python操作注册表模块_winreg

python操作注册表模块_winreg 2009-03-19 14:19:00 分类: WINDOWS 基本概念:KEY 键Value 值 函数和作用:CloseKey() - 关闭一个KeyConnectRegistry() - 链接到其他机器的注册表CreateKey() - 创建一个KeyDeleteKey() - 删除一个KeyDeleteValue() - 删除一个Key里面的值(value)EnumKey() - 为已经打开的Key里面的子键建立索引EnumValue() - 为打