Windows API一日一练 64 RegSetValueEx和RegDeleteValue函数
发布时间:2020-12-14 02:40:22 所属栏目:Windows 来源:网络整理
导读:上一次说到怎么创建注册表的键,但接着下来的问题就是怎么样保存数据到注册表里。注册表使用树形的方式管理数据,所以它的扩展和访问都是比较灵活的。不过注册表是系统重要信息库,每当 Windows 系统加载时,都首先从硬盘里读取它出来,才知道每台电脑所有硬
上一次说到怎么创建注册表的键,但接着下来的问题就是怎么样保存数据到注册表里。注册表使用树形的方式管理数据,所以它的扩展和访问都是比较灵活的。不过注册表是系统重要信息库,每当
Windows
系统加载时,都首先从硬盘里读取它出来,才知道每台电脑所有硬件配置信息,然后再加载不同的驱动程序。因此,注册表作为系统重要的文件,不要往里面写超过
2K
的数据大小,这样可以提高系统的速度。下面就来介绍一下怎么样保存一个字符串的键值。它需要使用
RegSetValueEx
函数来设置键值和使用
RegDeleteValue
函数来删除原来的键值。
?
函数
RegSetValueEx
和
RegDeleteValue
声明如下:
?
WINADVAPI
LONG
APIENTRY
RegSetValueExA (
??? __in HKEY hKey,
??? __in_opt LPCSTR lpValueName,
??? __reserved DWORD Reserved,
??? __in DWORD dwType,
??? __in_bcount_opt(cbData) CONST BYTE* lpData,
??? __in DWORD cbData
??? );
WINADVAPI
LONG
APIENTRY
RegSetValueExW (
??? __in HKEY hKey,
??? __in_opt LPCWSTR lpValueName,
??? __in DWORD cbData
??? );
#ifdef UNICODE
#define RegSetValueEx?RegSetValueExW
#else
#define RegSetValueEx?RegSetValueExA
#endif // !UNICODE
?
WINADVAPI
LONG
APIENTRY
RegDeleteValueA (
??? __in HKEY hKey,
??? __in_opt LPCSTR lpValueName
??? );
WINADVAPI
LONG
APIENTRY
RegDeleteValueW (
??? __in HKEY hKey,
??? __in_opt LPCWSTR lpValueName
??? );
#ifdef UNICODE
#define RegDeleteValue?RegDeleteValueW
#else
#define RegDeleteValue?RegDeleteValueA
#endif // !UNICODE
?
hKey
是主键。
lpValueName
是键名称。
dwType
是键值类型。
lpData
是键的数据。
cbData
是键值的大小。
?
调用函数的例子如下:
#001??//
打注册表。
HKEY_CURRENT_USER/"Software"/"Wincpp"/"testreg"
#002??// /"Windows"//"winsize" = "800*600"
#003??//
蔡军生
?2007/11/04 QQ:9073204
深圳
#004??BOOL WriteProfileString(LPCTSTR lpszSection,LPCTSTR lpszEntry,
#005???????? LPCTSTR lpszValue)
#006??{
#007???????? //
#008???????? LONG lResult;
#009???????? if (lpszEntry == NULL) //
删除整键。
#010???????? {
#011?????????????? HKEY hAppKey = GetAppRegistryKey();
#012?????????????? if (hAppKey == NULL)
#013?????????????? {
#014??????????????????? return FALSE;
#015?????????????? }???
#016?
#017?????????????? lResult = ::RegDeleteKey(hAppKey,lpszSection);
#018?????????????? RegCloseKey(hAppKey);
#019???????? }
#020???????? else if (lpszValue == NULL)
#021???????? {
#022?????????????? //
删除键值。
#023?????????????? HKEY hAppKey = GetAppRegistryKey();
#024?????????????? if (hAppKey == NULL)
#025?????????????? {
#026??????????????????? return FALSE;
#027?????????????? }???
#028?
#029?????????????? HKEY hSecKey = NULL;
#030?????????????? DWORD dw;
#031?????????????? RegCreateKeyEx(hAppKey,lpszSection,REG_NONE,
#032??????????????????? REG_OPTION_NON_VOLATILE,KEY_WRITE|KEY_READ,NULL,
#033??????????????????? &hSecKey,&dw);
#034?????????????? RegCloseKey(hAppKey);
#035?
#036?????????????? if (hSecKey == NULL)
#037?????????????? {
#038??????????????????? return FALSE;
#039?????????????? }???
#040?
#041?????????????? //
#042????????????? lResult = ::RegDeleteValue(hSecKey,(LPTSTR)lpszEntry);
#043?????????????? RegCloseKey(hSecKey);
#044???????? }
#045???????? else
#046???????? {
#047?????????????? //
设置键值。
#048?????????????? HKEY hAppKey = GetAppRegistryKey();
#049?????????????? if (hAppKey == NULL)
#050?????????????? {
#051??????????????????? return FALSE;
#052?????????????? }???
#053?
#054?????????????? HKEY hSecKey = NULL;
#055?????????????? DWORD dw;
#056?????????????? //
创建子键。
#057?????????????? RegCreateKeyEx(hAppKey,
#058??????????????????? REG_OPTION_NON_VOLATILE,
#059??????????????????? &hSecKey,&dw);
#060?????????????? RegCloseKey(hAppKey);
#061?
#062?????????????? if (hSecKey == NULL)
#063?????????????? {
#064??????????????????? return FALSE;
#065?????????????? }???
#066?
#067?????????????? //
设置子键中的项值。
#068????????????? lResult = RegSetValueEx(hSecKey,lpszEntry,REG_SZ,
#069?????????????????? (LPBYTE)lpszValue,(lstrlen(lpszValue)+1)*sizeof(TCHAR));
#070?????????????? RegCloseKey(hSecKey);
#071???????? }
#072???????? return lResult == ERROR_SUCCESS;
#073?
#074??}
?
?
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2003 – 动态ARP条目变为静态ARP条目
- .net – 所有者绘制TextBox以在WinForms中使用
- windows-runtime – 如何在代码中获取Windows Phone 8.1应用
- microsoft-office-2010 – Office 2010部署
- DLL – 升级到1.1.0后无法加载文件或程序集“Microsoft.Ent
- Windows批处理脚本:将所有输出重定向到文件
- 鼠标右键vsCode打开
- 更改Windows上Mercurial中的文件名大小写[复制]
- Windows中的PDF到TIFF免费库?
- 在Microsoft Sql Server Management Studio中测试存储过程