(1)C++读取注册表 1)打开句柄 2)读取键值 读取子程序
/* HKEY1:句柄(如:HKEY_LOCAL_MACHINE);data_set:路径(不包含句柄,切'\'需要使用转义符);name:路名;dwValue:键的数值返回到dwValue中。 */ int read_dword(HKEY HKEY1, LPCTSTR data_set, LPCTSTR name, int* dwValue)//读取操作表,其类型为DWORD { int tmp_error=0; HKEY hKEY;//定义有关的键,在查询结束时关闭 //打开与路径data_Set相关的hKEY int c; c = RegOpenKeyEx(HKEY1, data_set, 0, KEY_WOW64_64KEY | KEY_READ, &hKEY); //访问注册表,hKEY则保存此函数所打开的键的句柄 if (c == 0) { DWORD dwSize = sizeof(DWORD); DWORD dwType = REG_DWORD; if (::RegQueryValueEx(hKEY, name, 0, &dwType, (LPBYTE)&*dwValue, &dwSize) != ERROR_SUCCESS) { endl; tmp_error = 2; } } else tmp_error = 1; ::RegCloseKey(hKEY); return tmp_error; }(2)C++修改注册表的方法
/* dwValue:要写入的值(int型);data_set:路径;data_key:键名 */ int write_dword(int dwValue, LPCTSTR data_set, LPCTSTR data_key) { HKEY hkey;//定义有关的hkey,在查询结束时要关闭 int tmp_error = 0; DWORD dwSize = sizeof(DWORD); DWORD dwType = REG_DWORD; HKEY HKEY1 = HKEY_LOCAL_MACHINE; int c; c = RegOpenKeyEx(HKEY1, data_set, 0, KEY_WOW64_64KEY | KEY_SET_VALUE, &hkey); if (c == 5)//打开权限不足 tmp_error = 3; else { if (ERROR_SUCCESS == c) { //if (ERROR_SUCCESS == ::RegCreateKey(hkey, _T("test111"), &hTempKey)) //{_T("PortNumber") if (ERROR_SUCCESS != ::RegSetValueEx(hkey, data_key, 0, REG_DWORD, (CONST BYTE*) & dwValue, sizeof(DWORD))) { //cout << "写入注册表失败" << endl; tmp_error = 2;//写入失败 } } else tmp_error = 1;//打开失败 } ::RegCloseKey(hkey); return tmp_error; }修改注册表: SYSTEM\CurrentControlSet\Control\Terminal Server中的fDenyTSConnections。 1表示关闭远程桌面,0表示开启远程桌面。