做网站建设公司赚钱吗优质院校 建设网站
news/
2025/9/23 2:10:09/
文章来源:
做网站建设公司赚钱吗,优质院校 建设网站,网页设计公司哪家效果好,天元建设集团有限公司路桥工程分公司目录
注册表概述
打开关闭注册表
创建删除子健
查询写入删除键值
子健和键值的枚举
常用注册表操作 注册表概述
注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心数据库#xff0c;也可以说是一个非常巨大的树状分层结构的…目录
注册表概述
打开关闭注册表
创建删除子健
查询写入删除键值
子健和键值的枚举
常用注册表操作 注册表概述
注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心数据库也可以说是一个非常巨大的树状分层结构的数据库系统
注册表是一个存储计算机配置信息的数据库用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。
注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息它包括了计算机的硬件配置包括自动配置的即插即用的设备和已有的各种设备说明、状态属性以及各种状态信息和数据。利用一个功能强大的注册表数据库来统一集中地管理系统硬件设施、软件配置等信息从而方便了管理增强了系统的稳定性
早期的注册表以ini为扩展名的文本文件的配置文件。
自Windows95操作系统开始注册表真正成为Windows用户经常接触的内容并在其后的操作系统中继续沿用
注册表数据库由多个文件组成Windows提供了注册表编辑器
与INI文件不同的是
注册表采用了二进制形式登录数据注册表支持子键各级子关键字都有自己的“键值”注册表中的键值项可以包含可执行代码而不是简单的字串在同一台计算机上注册表可以存储多个用户的特性。
特点
注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置这使得修改某些设置后不用重新启动成为可能。注册表中登录的硬件部分数据可以支持高版本Windows的即插即用特性。当Windows检测到机器上的新设备时就把有关数据保存到注册表中另外还可以避免新设备与原有设备之间的资源冲突。管理人员和用户通过注册表可以在网络上检查系统的配置和设置使得远程管理得以实现。
注册表查看Win R 运行 regedit 。可以改动的区域 - HKEY_CURRENT_USER - SOFTWARE 注册表以树状结构进行呈现。
注册表根键说明 值
字符串值(REG_Sz)固定长度的文本字符串二进制值(REG_BINARY)原始二进制数据。多数硬件组件信息都以二进制数据存储DWORD值(REG_DWORD)数据由4字节长的数表示。设备驱动程序和服务的很多参数都是这种类型QWORD值(REG_QwORD)数据由8字节长的数表示多字符串值(REG_MULTl_SZ)多重字符串。包含列表或多值的值通常为该类型可扩充字符串值(REG_EXPAND_Z)长度可变的数据串。该数据类型包含在程序或服务使用该数据时解析的变量 打开关闭注册表
RegOpenKeyEx 打开注册表
RegOpenKeyExA是Windows API函数之一用于打开一个指定的注册表项。
LSTATUS RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult
);
下面是对该函数参数的解释 hKey表示要打开的注册表项的父项句柄。常见的父项句柄包括HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER等可以使用这些常量来表示。 lpSubKey表示相对于父项的子项路径。字符串类型使用 ANSI 编码。 ulOptions指定打开注册表项的选项。可以使用零或者REG_OPTION_NON_VOLATILE非易失性注册表项。 samDesired指定打开注册表项时的访问权限。使用KEY_READ、KEY_WRITE等常量来表示。 phkResult指向一个HKEY类型的指针用于接收打开的注册表项的句柄。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。 RegCloseKey 关闭已打开的注册表句柄
LSTATUS RegCloseKey(HKEY hKey
);
hKey:要关闭的键句柄即RegOpenKeyEx的phkResult值 测试代码
#include Windows.h
#include iostreamint main()
{// 打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion注册表项HKEY hKey;LPCSTR lpSubKey Software\\Microsoft\\Windows\\CurrentVersion;LSTATUS result RegOpenKeyExA(HKEY_CURRENT_USER, lpSubKey, 0, KEY_READ, hKey);if (result ERROR_SUCCESS){std::cout 成功打开注册表项 std::endl;// 在这里可以使用其他注册表API函数来读取或修改注册表项的键值对// 关闭注册表项句柄RegCloseKey(hKey);}else{std::cout 无法打开注册表项错误代码 result std::endl;}return 0;
}创建删除子健
RegCreateKeyEx 创建一个子键
RegCreateKeyExA是Windows API函数之一用于创建或打开一个指定的注册表项。
LSTATUS RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,const LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition
);
下面是对该函数参数的解释 hKey表示要创建或打开的注册表项的父项句柄。常见的父项句柄包括HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER等可以使用这些常量来表示。 lpSubKey表示相对于父项的子项路径。字符串类型使用 ANSI 编码。 Reserved保留参数必须为零。 lpClass为新创建的注册表项指定一个类别。该参数可以为NULL。 dwOptions指定创建或打开注册表项时的选项。 samDesired指定创建或打开注册表项时的访问权限。 lpSecurityAttributes指定注册表项的安全性设置。可以为NULL。 phkResult指向一个HKEY类型的指针用于接收创建或打开的注册表项的句柄。 lpdwDisposition指定一个DWORD类型的指针用于接收返回的操作结果信息。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。
使用RegCreateKeyExA函数可以创建或打开一个注册表项后可以使用其他注册表API函数来读取或修改注册表项的键值对。 RegDeleteKey 删除子键
LSTATUS RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey
); 测试代码
#include Windows.h
#include iostreamint main()
{// 创建或打开HKEY_CURRENT_USER\Software\MyApp注册表项HKEY hKey;LPCSTR lpSubKey Software\\MyApp;LSTATUS result RegCreateKeyExA(HKEY_CURRENT_USER, lpSubKey, 0, NULL, 0, KEY_ALL_ACCESS, NULL, hKey, NULL);if (result ERROR_SUCCESS){std::cout 成功创建或打开注册表项 std::endl;// 在这里可以使用其他注册表API函数来读取或修改注册表项的键值对// 关闭注册表项句柄RegCloseKey(hKey);}else{std::cout 无法创建或打开注册表项错误代码 result std::endl;}return 0;
}查询写入删除键值
RegQueryValueEx 读取键名称中的数据或查询键名称的属性
LSTATUS RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData
);
下面是对该函数参数的解释 hKey表示要查询的注册表项的句柄。 lpValueName表示要查询的注册表项中的值的名称。字符串类型使用 ANSI 编码。 lpReserved保留参数必须为NULL。 lpType指向一个DWORD类型的指针用于接收查询的值的数据类型。 lpData指向一个缓冲区用于接收查询到的值的数据。 lpcbData指向一个DWORD类型的指针用于指定缓冲区的大小并返回实际写入缓冲区的字节数。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。 RegSetValueEx 写入键值项
LSTATUS RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData
);
下面是对该函数参数的解释 hKey表示要设置的注册表项的句柄。 lpValueName表示要设置的注册表项中的值的名称。字符串类型使用 ANSI 编码。 Reserved保留参数必须为0。 dwType表示要设置的值的数据类型。可以使用预定义的常量如REG_SZ表示字符串类型。 lpData指向要设置的数据的缓冲区的指针。 cbData表示要设置的数据的大小以字节为单位。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。
使用RegSetValueExA函数可以设置注册表项中指定值的数据。通过指定dwType参数来确定数据的类型并将要设置的数据存储在lpData缓冲区中 RegDeleteValue 删除键值项
LSTATUS RegDeleteValueA(HKEY hKey,LPCSTR lpValueName
);
下面是对该函数参数的解释 hKey表示要删除值的注册表项的句柄。 lpValueName表示要删除的注册表项中的值的名称。字符串类型使用 ANSI 编码。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。
使用RegDeleteValueA函数可以删除注册表项中指定的值。通过指定hKey参数来确定要删除值的注册表项的位置通过指定lpValueName参数来指定要删除的值的名称。 测试代码
#include Windows.h
#include iostreamint main() {// 打开注册表项HKEY hKey;if (RegOpenKeyExA(HKEY_CURRENT_USER, Software\\MyApp, 0, KEY_ALL_ACCESS, hKey) ! ERROR_SUCCESS) {std::cout Failed to open registry key. std::endl;return 1;}// 查询注册表项中的值DWORD dwType;DWORD dwValue;DWORD dwSize sizeof(DWORD);if (RegQueryValueExA(hKey, MyValue, nullptr, dwType, reinterpret_castLPBYTE(dwValue), dwSize) ERROR_SUCCESS) {std::cout Value found: dwValue std::endl;} else {std::cout Value not found. std::endl;}// 设置注册表项中的值DWORD dwNewValue 123;if (RegSetValueExA(hKey, MyValue, 0, REG_DWORD, reinterpret_castconst BYTE*(dwNewValue), sizeof(DWORD)) ERROR_SUCCESS) {std::cout Value set successfully. std::endl;} else {std::cout Failed to set value. std::endl;}// 删除注册表项中的值if (RegDeleteValueA(hKey, MyValue) ERROR_SUCCESS) {std::cout Value deleted successfully. std::endl;} else {std::cout Failed to delete value. std::endl;}// 关闭注册表项RegCloseKey(hKey);return 0;
}子健和键值的枚举
RegEnumKeyEx 子键枚举函数
LSTATUS RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime
);
下面是对该函数参数的解释 hKey表示要枚举子项的注册表项的句柄。 dwIndex表示要枚举的子项的索引。使用0开始的索引。 lpName指向一个缓冲区用于存储返回的子项名称。 lpcchName指向一个变量用于指定lpName缓冲区的大小。在调用函数之前应将其设置为缓冲区大小以字节为单位并在函数调用后它将被设置为实际写入到lpName缓冲区中的字节数不包括终止null字符。 lpReserved保留参数必须为NULL。 lpClass指向一个缓冲区用于存储返回的子项的类名可选。可以将该参数设置为NULL如果不需要子项的类名。 lpcchClass指向一个变量用于指定lpClass缓冲区的大小。在函数调用之前应将其设置为缓冲区大小以字节为单位并在函数调用后它将被设置为实际写入到lpClass缓冲区中的字节数不包括终止null字符。 lpftLastWriteTime指向一个FILETIME结构体的指针用于存储子项的最后修改时间。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。
使用RegEnumKeyExA函数可以枚举注册表项中的子项。通过指定hKey参数来确定要枚举子项的注册表项的位置通过指定dwIndex参数来指定要枚举的子项的索引然后将子项名称存储在lpName缓冲区中。 RegEnumValue 枚举键值
LSTATUS RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData
);
下面是对该函数参数的解释 hKey表示要枚举值的注册表项的句柄。 dwIndex表示要枚举的值的索引。使用0开始的索引。 lpValueName指向一个缓冲区用于存储返回的值的名称。 lpcchValueName指向一个变量用于指定lpValueName缓冲区的大小。在调用函数之前应将其设置为缓冲区大小以字节为单位并在函数调用后它将被设置为实际写入到lpValueName缓冲区中的字节数不包括终止null字符。 lpReserved保留参数必须为NULL。 lpType指向一个变量用于接收值的类型。可以将该参数设置为NULL如果不需要值的类型。 lpData指向一个缓冲区用于存储值的数据。 lpcbData指向一个变量用于指定lpData缓冲区的大小。在函数调用之前应将其设置为缓冲区大小以字节为单位并在函数调用后它将被设置为实际写入到lpData缓冲区中的字节数。
函数返回值返回一个LSTATUS类型的值代表函数执行的结果状态码。如果函数成功执行返回值将是ERROR_SUCCESS。
使用RegEnumValueA函数可以枚举注册表项中的值。通过指定hKey参数来确定要枚举值的注册表项的位置通过指定dwIndex参数来指定要枚举的值的索引然后将值的名称存储在lpValueName缓冲区中并将值的数据存储在lpData缓冲区中。 测试代码 #include iostream
#include windows.husing namespace stdvoid EnumValue()
{// 遍历HKEY_CURRENT_USER\SOFTWARE\360se6// 打开键HKEY hKey360se6 NULL;LONG lRet RegCreateKey(HKEY_CURRENT_USER, SOFTWARE\\360se6, hKey360se6);if (lRet ! ERROR_SUCCESS){MessageBox(NULL, 打开结点失败, 提示, MB_OK);return;}// 获取值的个数DWORD dwValCnt 0;lRet RegQueryInfoKey(hKey360se6, NULL, NULL, NULL, NULL, NULL, NULL,dwValCnt, NULL, NULL, NULL, NULL);// 遍历值for (DWORD dwIdx 0; dwIdx dwValCnt; dwIdx){char szBuff[MAXWORD] {};DWORD dwNameLen sizeof(szBuff);RegEnumValue(hKey360se6, dwIdx, szBuff, dwNameLen, NULL, NULL, NULL, NULL);cout szBuff endl;}RegCloseKey(hKey360se6);
}int main()
{// 枚举值EnumValue();// 创建结点项HKEY hKey720 NULL;LONG lRet RegCreateKey(HKEY_CURRENT_USER, SOFTWARE\\360\\720, hKey720);if (lRet ! ERROR_SUCCESS){MessageBox(NULL, 创建结点失败, 提示, MB_OK);return 0;}// 删除key‐value对lRet RegDeleteValue(hKey720, 测试);if (lRet ! ERROR_SUCCESS){MessageBox(NULL, 删除key‐value对失败, 提示, MB_OK);return 0;}// 删除指定键lRet RegDeleteKey(HKEY_CURRENT_USER, SOFTWARE\\360\\720);if (lRet ! ERROR_SUCCESS){MessageBox(NULL, 删除子键720失败, 提示, MB_OK);return 0;}// 添加新的key‐value对char szBuff[] { hello register };lRet RegSetValueEx(hKey720, 测试, 0, REG_SZ, (PBYTE)szBuff, sizeof(szBuff));if (lRet ! ERROR_SUCCESS){MessageBox(NULL, 添加新的key‐value对失败, 提示, MB_OK);return 0;}DWORD dwVal 0x12345678;lRet RegSetValueEx(hKey720, 数值, 0, REG_DWORD, (PBYTE)dwVal, sizeof(dwVal));if (lRet ! ERROR_SUCCESS){MessageBox(NULL, 添加新的key‐value对失败, 提示, MB_OK);return 0;}RegCloseKey(hKey720);std::cout Hello World!\n;return 0;
} 常用注册表操作
禁用快捷菜单的”发送到“菜单项
打开计算机\HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers\SendTo 删除默认值。如果要恢复将默认值设置为 {7BA4C740-9E81-11CF-99D3-00AA004AE837} 删除快捷方式箭头
打开计算机\HKEY_CLASSES_ROOT\lnkfile删除IsShortcut键值 隐藏桌面图标
打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建名称为NoSetFolders键值并设置数据为1 禁止访问任务管理器
打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System修改DisableTaskmgr键值的数据为1。如果没有DisableTaskmgr键值就创建一个。 在桌面显示Windows版本
打开计算机\HKEY_CURRENT_USER\Control Panel\Desktop修改PaintDesktopVersion键值的数据为1 隐藏”重新启用“、”睡眠”和“休眠”命令
打开计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer新建一个NoClose键值并设置数据为1 禁用计算机中的USB端口
打开计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR修改Start键值数据为4 配置开机启动项
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911080.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!