码迷,mamicode.com
首页 > 其他好文 > 详细

操作注册表

时间:2014-08-29 17:34:18      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:blog   os   io   ar   for   div   代码   log   amp   

操作注册表:

#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;
}

  

操作注册表

标签:blog   os   io   ar   for   div   代码   log   amp   

原文地址:http://www.cnblogs.com/tiancun/p/3945135.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!