注册表操作样例

#define MAX_VALUE_NAME 256
#define TS_ROOT_KEY TEXT("Software\\Microsoft\\Terminal Server Client")
#define TS_DEFAULT_KEY TEXT("Software\\Microsoft\\Terminal Server Client\\Default")
#define TS_USERNAME_KEY TEXT("Software\\Microsoft\\Terminal Server Client\\UsernameHint")
#define TS_REG_VALUE_NAME_PCB TEXT("PinConnectionBar")
#define TS_REG_VALUE_NAME_MRU TEXT("MRU0")

int RegIsKeyOK(LPCTSTR IP,LPCTSTR UserName)
{
	LONG lResult;
	HKEY hKey;
	TCHAR szValueName[MAX_VALUE_NAME];
	TCHAR szValueDate[MAX_VALUE_NAME];  
	DWORD NameSize = MAX_VALUE_NAME; 
	DWORD DateSize = MAX_VALUE_NAME;

	lResult = RegOpenKeyEx (HKEY_CURRENT_USER,TS_USERNAME_KEY,0,KEY_READ,&hKey);
	if (lResult != ERROR_SUCCESS) 
	{
		//MessageBox(NULL,TEXT("打开注册表错误。"),TEXT("提示"),MB_OK);
		return FALSE;
	}
	lResult = RegEnumValue(hKey,0,szValueName,&NameSize,NULL,NULL,(BYTE*)szValueDate,&DateSize);
	RegCloseKey(hKey);

	if (lResult != ERROR_SUCCESS) 
	{
		//MessageBox(NULL,TEXT("枚举键值错误。"),TEXT("提示"),MB_OK);
		return FALSE;
	}
	if(_tcscmp(szValueName,IP))
	{
		//MessageBox(NULL,TEXT("IP不相同。"),TEXT("提示"),MB_OK);
		return FALSE;
	}
	if(_tcscmp(szValueDate,UserName))
	{
		//MessageBox(NULL,TEXT("用户名不同。"),TEXT("提示"),MB_OK);
		return FALSE;
	}
	return TRUE;
}

int RegDelKey(void)
{
	RegDeleteKey(HKEY_CURRENT_USER,TS_ROOT_KEY);
	return 0;
}

int RegWriteNewKey(LPCTSTR IP,LPCTSTR UserName)
{
	HKEY hKey;
	DWORD ret;
	DWORD Data=0x00000000;

	// Root Key
	ret = RegCreateKeyEx(HKEY_CURRENT_USER,TS_ROOT_KEY,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
	if(ret != ERROR_SUCCESS)
	{
		return -1;
	}
	ret = RegSetValueEx(hKey,TS_REG_VALUE_NAME_PCB,0,REG_DWORD,(BYTE*)&Data,4);
	RegCloseKey(hKey);

	//Default Key
	ret = RegCreateKeyEx(HKEY_CURRENT_USER,TS_DEFAULT_KEY,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
	if(ret != ERROR_SUCCESS)
	{
		return -1;
	}

	ret = RegSetValueEx(hKey,TS_REG_VALUE_NAME_MRU,0,REG_SZ,(BYTE*)IP,wcslen(IP)*2);
	RegCloseKey(hKey);

	//Usernamehint Key
	ret = RegCreateKeyEx(HKEY_CURRENT_USER,TS_USERNAME_KEY,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
	if(ret != ERROR_SUCCESS)
	{
		return -1;
	}

	ret = RegSetValueEx(hKey,IP,0,REG_SZ,(BYTE*)UserName,wcslen(UserName)*2);
	RegCloseKey(hKey);
	return 0;
}

int RegOperate(LPCTSTR IP,LPCTSTR UserName)
{
	DWORD ret;

	ret = RegIsKeyOK(IP,UserName);
	if(ret)
	{
		return 0;
	}

	RegDelKey();

	RegWriteNewKey(IP,UserName);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值