windows注册表修改(c++)

打开一个键的函数:

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种方法均对我本地执行的注册表修改无效,不知道是不是我的哪个设置不对

发布了12 篇原创文章 · 获赞 4 · 访问量 2562

猜你喜欢

转载自blog.csdn.net/xiayu729100940/article/details/89194030