打开一个键的函数:
RegOpenKeyEx
函数定义:LONG RegOpenKeyEx(HKEY hKey,//已经打开的键的句柄,或者直接是上述几个根键
LPCTSTR lpSubKey,//要打开的子键名字的地址
DWORD Reserved,//保留未使用
LPCTSTR IpClass,//指向一个类名,一般设置为0
DWORD ulOptions,//创建子健选项,REG_OPTION_NON_VOLATILE表示重启后保存设置.\
REG_OPTION_VOLATILE表示重启后不保存设置.
REGSAM samDesired,//打开方式,如读还是写
LPSECURITY_ATTRIBUTES IpSecurityAttributes,//指定句柄的继承性
PHKEY phkResult//返回的打开的子键的句柄
LPDWORD IpdwDispositiom//指定子健不存在时是否创建子键
);
返回ERROR_SUCCESS表示调用成功
设置一个键值RegSetValueEx
函数定义:LONG RegSetValueEx(HKEY hKey,//要设置的键的句柄
LPCTSTR lpValueName,//要访问的键值的名称
LPDWORD lpReserved,//保留值
DWORD dwType,//要设置的数据的类型
const BYTE *lpData,//要设置的健值
DWORD cbData//数据的长度
);
简单的修改代码实例:
#include<iostream>
#include<windows.h>
using namespace std;
;
void CreateReg(HKEY Root,char*szSubKey,char* ValueName,char* Data) //修改字符串键值
{
HKEY key;
long Ret=RegCreateKeyEx(Root,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&key,NULL);
Ret=RegSetValueEx(key,ValueName,0,REG_SZ,(BYTE*)Data,strlen(Data));
if(Ret!=ERROR_SUCCESS)
{ cout<<"失败!"<<endl;
}
RegCloseKey(key);
}
int main()
{
char url[255]="https://www.baidu.com"; //想要修改的网址
CreateReg(HKEY_CURRENT_USER,"Software\\Microsoft\\Internet Explorer\\Main","Start Page",url);
return 0;
}
注:头文件“windows.h”必须引用,否则HKEY类无法使用。
防止注册表修改的方法(window10)
1.打开本地安全策略->本地策略->安全选项
网络访问: 可远程访问的注册表路径和子路径 ,将其中的键值去除。
2..打开本地安全策略->高级审核策略配置->全局对象访问审核
注:这2种方法均对我本地执行的注册表修改无效,不知道是不是我的哪个设置不对